PHP Captcha表格

时间:2015-03-27 22:32:15

标签: php google-app-engine session captcha recaptcha

我有一个Google App Engine PHP网站。我有一个页面,其中包含以下重新填写表格:

<?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";
    }
    }
    ?>

一旦用户键入正确的重新接收,他们就会被发送到&#39; register.php&#39;。一切正常,用户发送正确。但问题是用户只需键入&#39; register.php&#39;进入URL并访问它。我试图让用户只有在输入recaptcha后才能访问此页面。 (重新访问的页面位于&register; php.php&#39;)的另一页。

我正在使用会话,当用户登录时,请在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();
}

1 个答案:

答案 0 :(得分:0)

好像您正在寻找或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,那么将执行错误块。