如何在PHP中使用每个新表单输入(提交)停止重新加载页面?

时间:2013-02-03 13:21:16

标签: php

我想创建允许用户猜数字的脚本,直到找到正确的数字。这个想法是php使用 rand()“想象”一个数字。用户拥有无限数量的点击数。但问题是用户必须在他的任务开始时找到与php“imag”完全相同的数字,并且每次输入新数字时我的脚本都会重新加载并始终输出新的随机数。我该怎么做才能解决这个问题?提前谢谢。

$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>

3 个答案:

答案 0 :(得分: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!";
}

答案 1 :(得分:1)

你可以使用php会话

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

然后检查用户输入是否等于$ _SESSION [&#34; numbertoguess&#34;] 如果您也不想重新加载页面,请考虑使用ajax。使用jquery非常方便

here对php会话的介绍

答案 2 :(得分:1)

通常,PHP不是用来解决这个问题的正确方法。相反,您应该使用JavaScript。但是,如果您希望它完全安全,您可能需要使用PHP,但是您需要从静态源(例如数据库或文件)调用该数字。例如,当用户进入页面时,将数字写入文件文件[会话ID],其中会话ID是您可以使用session_id()获得的会话ID。然后将随机数写入该文件并检查。最后,删除文件,unlink()ignore_user_abort()结合使用,以防用户退出页面。使用数据库更好地完成上述操作,但我不承担任何其他技能。

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