$ _SERVER ['PHP_SELF']不断重置输入值

时间:2016-05-07 03:27:21

标签: php forms

所以我试图构建一个用户试图猜测随机数的简单游戏。

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

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

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

有没有办法提交表单而不刷新页面。

const

2 个答案:

答案 0 :(得分:1)

$_SERVER['PHP_SELF']是网页的网址,减去域名。 Link3

如果您不想“加载”其他页面,请使用AJAX。

有时人们也会通过在脚本中添加if $_POST['variable']来使用同一页面。 http://php.net/manual/en/reserved.variables.server.php

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

<?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();
}

?>

答案 1 :(得分:0)

你好像很困惑。随机数会发生变化,因为当您生成新的随机数时会发生什么,并且每次运行此脚本时(即每次加载页面时)都会执行此操作。您的表单提交会重新加载页面,因为这样就可以在没有任何JavaScript的情况下提交<form>

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

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

相关问题