0

我想制作一个脚本,允许用户猜测数字直到找到正确的数字。这个想法是 php 使用rand()来“想象”一个数字。用户的点击次数不受限制。但问题是用户必须在他的任务开始时找到与 php "imagine" 相同的数字,并且每次我输入新数字时我的脚本都会重新加载并总是输出新的随机数。我应该怎么做才能解决这个问题?提前致谢。

$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 是您可以使用session_id(). 然后将随机数写入该文件并检查。最后删除文件,并unlink()结合ignore_user_abort()以防用户退出页面。使用数据库完成上述操作会更好,但我不承担任何额外的技能。

如果您不想保留它,您也可以将随机数存储在会话中。

于 2013-02-03T13:27:32.550 回答