2

確認用のセキュリティ質問のミニ プログラムを実行したい:

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

その後

$ans = $_POST['answer'];
if($ans == $answers[$questionId]){echo 'Confirmed !';}

したがって、フォームを送信した後、 rand 関数が実行され、質問が変更されるため、答えが正しいとは限りません。解決策はありますか?

4

3 に答える 3

5

質問 ID の値として非表示の入力をフォームに渡すことができます。これにより、ID が再送信されます。

<input type="hidden" name="questionId" value="<?php echo $questionId; ?>"></input>

次に、フォームが送信されたかどうかを確認します。

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

base64エンコーディングを使用して、これらすべてを保護することもできます

于 2013-05-17T17:21:04.813 に答える