2017-04-12 6 views
0

私はユーザーが質問に答えることができる簡単な数学ゲームを持っており、入力答えが正しいかどうかを確認します。数学ゲームでのintの比較PHP

答えが正しいときは正解、そうでないときは正しくないと思っています。これまでの回答が正しいことが分かっていても、正しい文字列が表示されていないことがあります。

私はそれが私の$_POSTと関係があると信じていますが、私は完全にはわかりません。これをどうすれば解決できますか?

<html> 
<head><title>Addition php</title></head> 
<body> 
<h1>MATH GAME WOOOO</h1> 

    <form action="<?php $PHP_SELF?>" method="POST"> 
      <input type="text" name="guess"><br> 
      <input type="submit" name="guess-butt"><br> 
    </form> 

<?php 

    $operators = array("+", "-", "*", "/"); 
    $operator = $operators[rand(0,2)]; 
    $rand_int1 = rand(0, 10); 
    $rand_int2 = rand(0, 10); 

    echo("<a>What is " . $rand_int1 . ' ' . $operator . ' ' . $rand_int2 . "?</a><br>"); 
    echo('guess for last question: ' . $_POST['guess'] . '<br>'); 

if (isset($_POST['guess'])) { 

    $guess = intval($_POST['guess']); 

    if ($operator == "+") 
    { 
     $temp = $rand_int1 + $rand_int2; 
     echo('answer: ' . $temp . "<br>" . ''); 
     if ($guess == $temp) 
     { 
      echo("<br>correct<br>"); 
     } 
     else 
     { 
      echo('<br>incorrect<br>'); 
     } 
    } 

    elseif ($operator == "-") 
    { 
     $temp = $rand_int1 - $rand_int2; 
     echo('answer: ' . $temp . "<br>" . ''); 
     if ($guess == $temp) 
     { 
      echo("<br>correct<br>"); 
     } 
     else 
     { 
      echo('<br>incorrect<br>'); 
     } 
    } 

    elseif ($operator == "*") 
    { 
     $temp = $rand_int1 * $rand_int2; 
     echo('answer: ' . $temp . "<br>" . ''); 
     if ($guess == $temp) 
     { 
      echo("<br>correct<br>"); 
     } 
     else 
     { 
      echo('<br>incorrect<br>'); 
     } 
    } 

    elseif ($operator == "/") 
    { 
     $temp = $rand_int1/$rand_int2; 
     echo('answer: ' . $temp . "<br>" . ''); 
     if ($guess == $temp) { 
      echo("<br>correct<br>"); 
     } 
     else 
     { 
      echo('<br>incorrect<br>'); 
     } 
    } 
} 

?> 

</body> 
</html> 
+0

'$演算子[ランド(0,2)]

また、隠された入力フィールドとして$rand_int1と2変数を提出しようとすることができます; ''/'は決して選択されません。配列からランダムな要素を選択するには 'array_rand()'を使うべきです。 – Barmar

+0

私はすべての演算子を見ることができます... – Jason

+3

あなたの推測は、異なるランダム値を使用する前のページの負荷からです。 – Chris

答えて

1

変数$rand_int1$rand_int2は、ページをリロードするたびにランダム化されます。したがって、ユーザーが「5 + 6とは何ですか?」というメッセージを見た場合ページがそれ自身にPOSTリクエストを送信し、$rand_int1と2に新たにランダム化された数字が含まれています。正しい答えを得ることは非常に難しいです。

<input type="hidden" name="rand_int1" value="<?php echo $rand_int1; ?>"> 
    <input type="hidden" name="rand_int2" value="<?php echo $rand_int2; ?>"> 

など何かをするより:

$answer = $_POST['rand_int1'] + $_POST['rand_int2']; 

echo('answer: ' . $answer . "<br>" . ''); 
if ($guess == $answer) 
{ 
    echo("<br>correct<br>"); 
} 
else 
{ 
    echo('<br>incorrect<br>'); 
}