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 に答える