2016-07-03 6 views
0

投稿リクエスト後に値を保持する方法を知りたい。私のコードで投稿後に値を保持する方法は?

、私はこれらの変数を持っている:

  1. MYVAR
  2. myans
  3. 結果

myvarは0-5の間でランダムvalのです。 myans == myvarの場合、私の入力からmyansを取得し、結果が真(そうでない場合はfalse)になります。

私は試してみる前にansを提出する前にを参照してください。しかし、私が送信するときにvarを見るのですが、私はそれが時々偽であることもあります。私は何が欠けていますか?

example.php

<?php 

    session_start(); 

    if (!isset($_COOKIE['result'])) { 
     setcookie("result","EMPTY"); 
    } 

    setcookie("myvar",rand(0,5)); 

    if (!empty($_POST)) { 

     if ($_POST['myans'] == $_COOKIE['myvar']) { 
      setcookie("result","TRUE"); 
     } 
     else { 
      setcookie("result","FALSE"); 
     } 
    } 
?> 

<html> 
<head> 
    <title>Example</title> 
</head> 
<body> 
    <form method="post" action=""> 
     <?php echo $_COOKIE['myvar'] ?> 
     <input type="text" name="myans"> 
     <input type="submit" value="Send"> 
     <?php echo $_COOKIE['result'] ?> 
    </form> 
</body> 
</html> 

答えて

0

あなたが持った問題が、あなたの乱数ジェネレータは、元に比較する前に、新しい番号を作成することによって引き起こされました。空であれば "myvar"だけを設定するようにいくつかの変更を加えました。これは一度しか設定されませんが、少なくともあなたのコードは意図したとおりに動作することがわかります。私はあなたがそれに追加する前にどのような機能を望んでいるのかを計画することをお勧めします。

私はあなたを "$ _COOKIE" varから "$ _SESSION" varsに切り替えました。それらはクライアントから隠されており、リフレッシュされなければPHPのデフォルトで約24分かかります。私はあなたがこれを使って何を計画しているのか分かりませんが、クッキーを使うことでエンドユーザはその情報を操作できます。これがあなたの心配でない場合は、忘れずに "setcookie()"行のコメントを外してください。

<?php 

    session_start(); 

    if (!isset($_SESSION['result'])) { 
     //setcookie("result","EMPTY"); 
     $_SESSION["result"] = "EMPTY"; 
    } 

    //setcookie("myvar",rand(0,5)); 
    if(empty($_SESSION["myvar"])){ 
     $_SESSION["myvar"] = rand(0,5); 
    } 
    // 

    if (!empty($_POST)) { 
     if ($_POST['myans'] == $_SESSION['myvar']) { 
      //setcookie("result","TRUE"); 
      $_SESSION["result"] = "TRUE"; 
     } else { 
      //setcookie("result","FALSE"); 
      $_SESSION["result"] = "FALSE"; 
     } 
    } 

?> 

<html> 
<head> 
    <title>Example</title> 
</head> 
<body> 
<form method="post" action=""> 
    <?php echo isset($_SESSION['myvar']) ? $_SESSION['myvar'] : ""; ?> 
    <input type="text" name="myans"> 
    <input type="submit" value="Send"> 
    <?php echo isset($_SESSION['result']) ? $_SESSION['result'] : ""; ?> 
</form> 
</body> 
</html> 
関連する問題