比较数学游戏PHP中的内容

时间:2017-04-12 18:42:09

标签: php math post int operators

我做了一个简单的数学游戏,用户可以回答问题,然后检查输入答案是否正确。

我希望它在答案正确时说出正确,在不答案时说错。到目前为止,我还没有看到正确的字符串显示,即使我知道我输入的答案是正确的。

我认为这与我的$_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>

1 个答案:

答案 0 :(得分:1)

每次页面重新加载时,变量$rand_int1$rand_int2都会随机化。因此,如果用户看到消息“什么是5 + 6?”并回答它,页面向自己提交POST请求,$rand_int1和2包含新随机数。所以很难得到正确的答案。

您也可以尝试将$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>');
}