0

ユーザーが正しい数字にヒットするまで数字を推測できるスクリプトを作成したいと考えています。アイデアは、php がrand()を使用して 1 つの数字を「想像」することです。ユーザーには無制限の数のヒットがあります。しかし、問題は、ユーザーがクエストの開始時にphpの「想像」とまったく同じ番号を見つける必要があり、新しい番号を入力するたびにスクリプトがリロードされ、常に新しい乱数が出力されることです。この問題を解決するにはどうすればよいですか? 前もって感謝します。

$r= rand("1","10");

if (isset($_POST['unos'])){

$unos = $_POST['unos'];
if ($unos==$r){
echo "Congratulations you did not miss the center";
}
elseif ($unos<$r){
echo "your number is less then quested number</br>try again";

}
elseif ($unos>$r){
echo "your number is higher then quested number</br>try again"; 
}

}
else{
echo "Go!";
}

html

<form action="?" method="post">
<input type="number" name="unos" id="unos">
<input type="submit" value="Start">
</form>
4

3 に答える 3

1

ランダムな値をセッションに入れることができます。こうすることで、クエスト全体を通して数が同じままになります。クエストの後、値の設定を解除できます。セッション内の値は、クライアントには表示されません。フォームの非表示フィールドに値を設定するなどのその他のオプションは、引き続きソースにある可能性があります。

例;

session_start();
$r= isset($_SESSION['random']) ? $_SESSION['random'] : rand("1","10");

if (isset($_POST['unos'])){

$unos = $_POST['unos'];
if ($unos==$r){
echo "Congratulations you did not miss the center";
}
elseif ($unos<$r){
echo "your number is less then quested number</br>try again";

}
elseif ($unos>$r){
echo "your number is higher then quested number</br>try again"; 
}

}
else{
unset($_SESSION['random']); //or session_destroy();
echo "Go!";
}
于 2013-02-03T13:25:36.647 に答える
1

PHPセッションを使用できます

<?php
    session_start();
    if(!isset($_SESSION["numbertoguess"])){
        $_SESSION["numbertoguess"] = generate_randomNumber();
    }

次に、ユーザー入力が $_SESSION["numbertoguess"] と等しいかどうかを確認します。ページをリロードしたくない場合は、ajax の使用を検討してください。jqueryを使うととても便利です

ここでphpセッションの紹介

于 2013-02-03T13:26:51.157 に答える
1

一般に、この問題を解決するために PHP を使用するのは適切ではありません。代わりに、JavaScript を使用する必要があります。ただし、完全に安全にしたい場合は、結局 PHP を使用する必要があるかもしれませんが、データベースやファイルなどの静的ソースから番号を呼び出す必要があります。たとえば、ユーザーがページに入ると、番号をファイル file[session id] に書き込みます。ここで、session id は、 を使用して取得できるセッション ID ですsession_id()。次に、乱数をそのファイルに書き込み、それに対してチェックします。最後に、ユーザーがページを終了した場合にunlink()備えて、ファイルを削除します。ignore_user_abort()上記のことをデータベースで行うのはさらに良いことですが、追加のスキルは想定していません。

乱数を保持したくない場合は、乱数をセッションに保存することもできます。

于 2013-02-03T13:27:32.550 に答える