如何停止用php中的每个新表单输入(提交)重新加载页面



我想制作一个脚本,允许用户猜测数字,直到找到正确的数字。这个想法是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()结合使用,以防用户退出页面。使用数据库完成上述操作更好,但我不认为有任何额外的技能。

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

最新更新