PHP 验证码表单
PHP Captcha Form
我有一个 Google App Engine PHP 网站。我有一个包含以下 recaptcha 表单的页面:
<?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'。这一切工作正常,用户被正确发送。但问题是用户只需在 URL 中键入 'register.php' 即可访问它。我试图让用户只有在输入 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();
}
您似乎在寻找 Or logical operator,在重定向前保存值:
if($response["success"] === true)
{
$_SESSION['success'] = true;
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=register.php">';
exit;
}
现在添加一个新检查:
<?php
session_start();
if ( !isset($_SESSION['username']) || $_SESSION['success'] != true )
{
header("Location:error.php");
exit();
}
?>
如果这些表达式中的任何一个是 true
则将执行错误块。
我有一个 Google App Engine PHP 网站。我有一个包含以下 recaptcha 表单的页面:
<?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'。这一切工作正常,用户被正确发送。但问题是用户只需在 URL 中键入 'register.php' 即可访问它。我试图让用户只有在输入 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();
}
您似乎在寻找 Or logical operator,在重定向前保存值:
if($response["success"] === true)
{
$_SESSION['success'] = true;
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=register.php">';
exit;
}
现在添加一个新检查:
<?php
session_start();
if ( !isset($_SESSION['username']) || $_SESSION['success'] != true )
{
header("Location:error.php");
exit();
}
?>
如果这些表达式中的任何一个是 true
则将执行错误块。