我做了一个简单的数学游戏,用户可以回答问题,然后检查输入答案是否正确。
我希望它在答案正确时说出正确,在不答案时说错。到目前为止,我还没有看到正确的字符串显示,即使我知道我输入的答案是正确的。
我认为这与我的$_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 :(得分: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>');
}