我想制作一个脚本,允许用户猜测数字,直到找到正确的数字。这个想法是php使用rand()"想象"一个数字。用户的点击次数是无限的。但问题是,用户在任务开始时必须找到与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>
您可以将随机值放入会话中。这样,在整个任务中,数字将保持不变。任务完成后,你可以取消设置值。会话中的值对客户端不可见。其他选项,如在表单中的隐藏字段中设置值,仍然可以位于源中。
一个例子;
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!";
}
您可以使用php会话
<?php
session_start();
if(!isset($_SESSION["numbertoguess"])){
$_SESSION["numbertoguess"] = generate_randomNumber();
}
然后检查用户输入是否等于$_SESSION["numbertoguess"]如果您也不想重新加载页面,可以考虑使用ajax。使用jquery是非常方便的
这里介绍php会话
一般来说,PHP并不是解决这个问题的正确方法。相反,您应该使用JavaScript。然而,如果你想让它完全安全,你可能需要使用PHP,但你需要从静态来源调用数字,比如数据库或文件。例如,当用户进入页面时,将数字写入文件文件[session-id],其中session-id是可以使用session_id()
获得的会话id。然后将随机数写入该文件并进行检查。最后删除文件,unlink()
与ignore_user_abort()
结合使用,以防用户退出页面。使用数据库完成上述操作更好,但我不认为有任何额外的技能。
如果您不想保留随机数,您也可以将其存储在会话中。