每次刷新页面时为什么rand()?

Art*_*ski 2 php

我想运行迷你程序以确认安全问题:

$questions = array('dog legs','car legs','the best country in the world');
$answers = array(4,4,'USA');
$questionId = rand(0, (count($questions)-1));
Run Code Online (Sandbox Code Playgroud)

然后

$ans = $_POST['answer'];
if($ans == $answers[$questionId]){echo 'Confirmed !';}
Run Code Online (Sandbox Code Playgroud)

所以问题是,不是我每次回答答案都是正确的,因为在发送表单后,rand函数运行并更改问题!有解决方案吗

Val*_*ier 5

您可以在表单中传入一个隐藏的输入,其值为问题ID,这样就会重新发送ID.

<input type="hidden" name="questionId" value="<?php echo $questionId; ?>"></input>
Run Code Online (Sandbox Code Playgroud)

然后检查表单是否已提交.

<?php
if ($_POST['questionID'])
    $questionID = $_POST['questionID'];
else
    $questionID = rand(0, (count($questions)-1));
Run Code Online (Sandbox Code Playgroud)

您还可以使用base64编码来保护所有这些