好的,我正在尝试用一些东西来问你随机的乘法问题。现在问问题很好。生成随机问题。但是当它重新加载页面时,随机数是不同的......
我该如何解决这个问题?
<?php
$rndnum1 = rand(1, 12);
$rndnum2 = rand(1, 12);
echo "<h3>". $rndnum1 . " x ";
echo $rndnum2 . "</h3>";
if($_SERVER["REQUEST_METHOD"] == "GET") {
$answer=0;
}
else if($_SERVER["REQUEST_METHOD"] == "POST") {
$answer=trim($_POST["answerInput"]);
$check=$rndnum1*$rndnum2;
if($answer==$check) {
echo "Correct!";
}
else {
echo "Wrong!";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
<table>
<tr>
<td>
First Name:
</td>
<td>
<input type="text" name="answerInput" value="<?php echo $answer; ?>" size="20"/>
</td>
<td>
<?php echo $answerError; ?>
</td>
</tr>
<tr>
<td class="signupTd" colspan="2">
<input type="submit" name="submit" value="Submit"/>
</td>
</tr>
</table>
</form>
答案 0 :(得分:2)
当你重新加载页面时,$ rndnum1和$ rndnum2通过rand()函数设置为新的随机数。这就是他们不能保持不变的原因。尝试将原始随机数与POST一起传递,并在检查答案是否正确之前计算$ _POST中的数字。
为此,请确保在提交表单中为随机变量包含以下行:
<input type="hidden" name="rndnum1" value="<?php echo $rndnum1 ?>" />
然后,在提交答案表单后的下一次页面加载中,使用$_POST['rndnum1']
等获取数字。
答案 1 :(得分:1)
在隐藏的表单字段中包含生成的随机数,以便将它们提交给服务器。
例如,仅在<form
&gt;:
<input type="hidden" name="rand1" value="<?=$rndnum1?>">
<input type="hidden" name="rand2" value="<?=$rndnum2?>">
然后在PHP中,当您处理表单时,使用$_POST['rand1']
和$_POST['rand2']
来检索原始数字,相乘,然后与用户给出的答案进行比较。
答案 2 :(得分:0)
将srand(0)添加到代码顶部。
实际上您可能想要使用随机初始化的cookie,然后将其传递给srand()
答案 3 :(得分:0)
这样的事情应该有效。
<?php
@session_start();
if($_SERVER["REQUEST_METHOD"] == "GET")
{
$answer=0;
}
if (!$_POST['submit'])
{
$_SESSION['rndnum1'] = rand(1, 12);
$_SESSION['rndnum2'] = rand(1, 12);
}
else
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$answer = trim($_POST["answerInput"]);
$check = $_SESSION['rndnum1']*$_SESSION['rndnum2'];
if( $answer == $check)
{
$msg = "Correct!";
}
else
{
$msg = "Wrong!";
}
}
echo "<h3>". $_SESSION['rndnum1'] . " x " . $_SESSION['rndnum2'] . "</h3>";
if ($_POST['submit'])
{
echo $msg;
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
<table>
<tr>
<td>
First Name:
</td>
<td>
<input type="text" name="answerInput" value="<?php echo $answer; ?>" size="20"/>
</td>
<td>
<?php echo $answerError; ?>
</td>
</tr>
<tr>
<td class="signupTd" colspan="2">
<input type="submit" name="submit" value="Submit"/>
</td>
</tr>
</table>
</form>