0

我正在为我的电子邮件表单构建一个简单的反机器人。这是一个产生问题的代码:

<?php
    session_start();
    $a = rand(1, 10);
    $b = rand(1, 10);
    $antibot = $a + $b;
    $_SESSION["antibot"] = $antibot;
?>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
    $("#sendEmail").click(function(){
            var antibot = $("#antibot").val();
        $.post(
            "test.php",
            {antibot: antibot}, 
            function(data){
                    alert(data.info);
            }, 
            "json"
            );
        );
    );
);
    </script>
    </head>
    <body>
    <table>
        <tr><td>AntiBot: <?php echo $a . ' + ' . $b;?> = </td><td><input type='text' id='antibot' /></td></tr>
        <tr><td colspan='2'><input type='button' id='sendEmail' value='Send'/></td></tr>
    </table>
    </body>
    </html>

还有我的 test.php

<?php
    session_start();
    $antibot = $_POST["antibot"];
    $data = array();
    if(isset($_SESSION["antibot"])){
        if($_SESSION["antibot"] == $antibot){
            $data["info"] = "Session is isset and answer is right!";
        }
        else{
            $data["info"] = "Session is isset but answer is NOT right!";
        }
    }
    else{
        $data["info"] = "Session is NOT isset!";
    }
    echo json_encode($data);
?>

我不断收到此信息:“会话已设置,但答案不正确!” 如果您可以在 test.php 中看到 $_SESSION["antibot"] 已设置,但""无论我在输入字段中输入什么值#antibot

我不明白为什么会发生这种情况,请有人告诉我问题出在哪里以及如何解决?

4

1 回答 1

1

我在这里测试了这段代码:http: //onlinephpfunctions.com/stackoverflow/11981309/

它似乎完全有效。

我不得不对您的 javascript 进行一些修改:

<script type="text/javascript">
$(document).ready(function(){
    $("#sendEmail").click(function(){
            var antibot = $("#antibot").val();
        $.post(
            "test.php",
            {antibot: antibot}, 
            function(data){
                alert(data.info);
            }, 
            "json"
           )
    })

})
    </script>

之后它工作正常。可能只是浏览器中的 cookie 存在一些问题,或者 PHP 配置中存在错误,因此无法正确存储会话。请检查一下,您的代码可以正常工作,正如您在演示中看到的那样。

于 2012-08-16T06:01:39.877 回答