У меня есть сайт PHP Google App Engine. У меня есть страница со следующей формы ReCaptcha:PHP Captcha Form
<?php
ob_start();
if($_SERVER["REQUEST_METHOD"] === "POST")
{
//verify captcha
$recaptcha_secret = "6LfkBQMTAAAAABN5yEqoqxoLqKOBKIvoCHZ-3vP3";
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secret."&response=".$_POST['g-recaptcha-response']);
$response = json_decode($response, true);
while (ob_get_status())
{
ob_end_clean();
}
if($response["success"] === true)
{
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=register.php">';
exit;
}
else
{
echo "Please try again";
}
}
?>
После того, как пользователь в правильном рекапчи они отправляются на «register.php». Все это прекрасно работает, и пользователь отправляется правильно. Но проблема в том, что пользователь может просто ввести «register.php» в URL-адрес и получить к нему доступ. Я пытаюсь сделать так, чтобы пользователь мог получить доступ только к этой странице, если была введена recaptcha. (Recaptcha находится на другой странице, чтобы «register.php»).
Я использую сессии, когда пользователь вошел в систему, так что есть это на register.php, и это должно остаться там:
<?php
session_start();
if (!isset($_SESSION['username']))
{
header("Location:error.php");
exit();
}
?>
Есть ли способ сделать что-то вроде:
<?php
session_start();
if (!isset($_SESSION['username']))
{
header("Location:error.php");
exit();
}
and ($response["success"] === false)
header("Location:error.php");
exit();
}
Да, это то, что я думал. Я пытался, но ничего не происходит. Я все еще могу получить доступ к register.php. Может быть, потому что $ ответ с другой страницы? – Thomas
О, извините, я думал, что вы это проверили, а затем сохраните его в сеансе перед перенаправлением, я отредактировал свой ответ. –
Большое спасибо – Thomas