-4

クエリの送信が 2 回行われないようにするために使用するコードのこの部分があります。さて、これは私がそれを機能させるために使用するクエリであり、機能します。

    $form_secret = isset($_POST["form_secret"])?$_POST["form_secret"]:'';    
    $query = "INSERT INTO coupon (user_id,points) VALUES ('$user_id','$points')";
    $result=mysql_query($query);

    if ($points == 250) 
    { 
       $url="http://testext.i-movo.com/api/receivesms.aspx?".$str_from.$str_zip.$phone.$str_time.$date1.$str_msg;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }
    else if ($points == 500) 
    {
        $url="http://testext.i-movo.com/api/receivesms.aspx?".$str_from.$str_zip.$phone.$str_time.$date1.$str_msg;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }
    else 
    {
        echo "We are sorry, you don't possess enough points in order to take the coupon";   
    }

今まで完璧!次に必要なのは二重送信を防ぐことなので、ここでこのコードを使用していますが、問題は、上記のすべてのコードをこのコード内に配置すると機能しないことです..誰もがこれを結合する方法を教えてください. 2つのコード?ありがとう..

if(isset($_SESSION["FORM_SECRET"])) 
{
    if(strcasecmp($form_secret, $_SESSION["FORM_SECRET"]) === 0) 
    {
        /*Put your form submission code here after processing the form data, unset the secret key from the session*/
        unset($_SESSION["FORM_SECRET"]);
    }
    else 
    {
        //Invalid secret key
    }
} 
else 
{
    //Secret key missing
    echo "Form data has already been processed!";
}
4

1 に答える 1

0

$_SESSION["FORM_SECRET"]デフォルトでは設定されていないため、そもそもフォームを送信することはできません。

プロセスを逆にします。フォームに秘密鍵を与え、フォームが送信されたときにその秘密をセッションに保存します。次に、次の送信時に、$_SESSION["FORM_SECRET"]が設定されている (送信されたシークレットと同じである) かどうかを確認できるため、同じフォームの 2 回目の送信であることがわかります。

于 2012-09-18T12:15:46.727 に答える