$\u服务器[';PHP#u SELF';]不断重置输入值

$\u服务器[';PHP#u SELF';]不断重置输入值,php,forms,Php,Forms,因此,我试图建立一个简单的游戏,用户试图猜测一个随机数 我遇到的问题是,每次提交表单时,页面都会刷新,因此随机数会发生变化 通过阅读$_服务器['PHP_SELF']上的其他帖子,我认为它不应该仅仅刷新页面的输入值 但每次我提交表格时,我的随机数都会改变 是否有方法提交表单而不刷新页面 <?php function form(){ echo "<form method='post' action=" . $_SERVER['PHP_SELF'] . ">"; ech

因此,我试图建立一个简单的游戏,用户试图猜测一个随机数

我遇到的问题是,每次提交表单时,页面都会刷新,因此随机数会发生变化

通过阅读$_服务器['PHP_SELF']上的其他帖子,我认为它不应该仅仅刷新页面的输入值

但每次我提交表格时,我的随机数都会改变

是否有方法提交表单而不刷新页面

<?php

function form(){
 echo "<form method='post' action=" . $_SERVER['PHP_SELF'] . ">";
    echo "<input type='text' name='user' /><br/>";
    echo "<input type='submit' value='submit' />";

}

form();

$userinput = $_POST['user'];

$random = rand (  1 , 4);

echo "input is " . $userinput . "  " . "random number is " . $random;
?> 

你似乎很困惑。随机数会发生变化,因为生成新的随机数时会发生这种情况,并且每次运行此脚本时(即每次加载页面时)都会这样做。表单提交会重新加载页面,因为这就是在没有任何JavaScript的情况下提交
的工作方式

听起来好像您正在尝试提交表单而不重新加载。在这种情况下,您需要使用AJAX。也就是说,使用JavaScript提交表单,但不重定向浏览器


非常清楚:
$\u服务器['PHP\u SELF']
与您的问题完全无关。将其用作表单标记的
action
属性的值只会告诉浏览器发布到同一页面,而不是其他页面。它仍然执行完整的POST请求,从而重新加载页面。换句话说,如果您的目标是保持在同一页面上,那么您使用什么作为
操作
属性并不重要;无论放在哪里,都必须使用JavaScript。

$\u SERVER['PHP\u SELF']是页面的URL,减去域。

如果您不想“加载”另一个页面,那么使用AJAX

有时,人们还通过在脚本中添加
if$\u POST['variable']
来使用同一页面。

您还可以将随机数添加到隐藏输入的表单中,如下所示:

<?php

function form(){
    echo "<form method='post' action=" . $_SERVER['PHP_SELF'] . ">";
    echo "<input type='text' name='user' /><br/>";
    echo "<input type='submit' value='submit' />";
    echo "<input type='hidden' name='random' value=".rand(1, 4)."/><br/>";
}

if (!empty($_POST['user'])) {
    $userinput = $_POST['user'];
    $random = $_POST['random'];
    echo "input is " . $userinput . "  " . "random number is " . $random;
} else {
    form();
}

?>

谢谢您的帮助。但我认为这并不能解决问题,因为我希望用户能够猜出他们可以一直猜到的随机数,直到他们得到正确的数字。同样,这将给出一个随机数实例和一个输入数实例,该实例将重置,而不是允许随机数保持指定状态,直到猜测为止。这有意义吗?只有在
$\u POST['user']时,才能重置随机数
为空,并在隐藏输入中回显其值,然后添加另一个条件以比较用户提交的数字和随机数-只有在用户输入为空时才会重置-或者可能在猜测正确时…一些有用的代码片段,以满足您在本页上的需要谢谢steve,这正是我想要的。很高兴它对某人有用,尽管它现在被关闭为“太宽”。