刷新页面时如何维护 $post 值;换句话说,如何在不丢失 Post 值的情况下刷新页面
7 回答
如果没有页面提交,这是不可能的!除非您以某种方式将表单字段提交回服务器,即使用 jQuery 等不刷新页面。某种自动保存表单脚本。
如果这是用于验证检查,则不需要建议的会话。
用户填写表单并提交给自己 服务器端验证失败
$_GET
<input type="hidden" name="first"
value="<?php echo htmlspecialchars($first, ENT_QUOTES); ?>" />
验证消息,结束。
或者按照建议将整个帖子保存在会话中,类似这样,但再次必须先提交才能工作....
$_POST
if(isset($_POST) & count($_POST)) { $_SESSION['post'] = $_POST; }
if(isset($_SESSION['post']) && count($_SESSION['post'])) { $_POST = $_SESSION['post']; }
你不能这样做。POST 变量可能不会被重新发送,如果是,浏览器通常会在用户刷新页面时执行此操作。
如果用户单击指向另一个页面的链接而不是刷新,则永远不会重新设置 POST 变量。
如果$post
是一个普通变量,那么它永远不会被保存。
如果您需要保存某些内容,则需要使用 cookie。$_SESSION
是 cookie 的一种实现。Cookie 是存储在用户浏览器上的数据,每次请求都会重新发送。
参考: http: //php.net/manual/en/reserved.variables.session.php
$_SESSION 变量只是一个关联数组,所以要使用它,只需执行以下操作:
$_SESSION['foo'] = $bar
您可以将 $_POST 值保存在 $_SESSION's Save your all $_POST's 中,如下所示:
<?php
session_start();
$_SESSION['value1'] = $_POST['value1'];
$_SESSION['value2'] = $_POST['value2'];
// ETC...
echo "<input type='text' name='value1' value='".$_SESSION['value1']."' />";
echo "<input type='text' name='value2' value='".$_SESSION['value2']."' />";
?>
实际上,它以 html 形式保存发布数据。当您需要将插入的数据保留在文本框中时,这很有价值。
<form>
<input type="text" name="student_name" value="<?php echo
isset($_POST['student_name']) ? $_POST['student_name']:'';
?>">
</form>
您可以使用与POST
表单内部相同的值,这样,当您提交它时 - 它会留在那里。
一个小例子:
<?php
$var = mysql_real_escape_string($_POST['var']);
?>
<form id="1" name="1" action="/" method="post">
<input type="text" value="<?php print $var;?>"/>
<input type="submit" value="Submit" />
</form>
将帖子值放入会话
session_start();
$_SESSION["POST_VARS"]=$_POST;
你可以在另一个页面中获取这个值,比如
session_start();
$_SESSION["POST_VARS"]["name"];
$_SESSION["POST_VARS"]["address"];
您可以使用文件来保存发布数据,因此在有人删除文件之前不会删除数据,当然您可以轻松修改文件
if($_POST['name'])
{
$file = fopen('poststored.txt','wb');
fwrite($file,''.$_POST['value'].'');
fclose($file);
}
if (file_exists('poststored.txt')) {
$file = fopen('ipSelected.txt', 'r');
$value = fgets($file);
fclose($file);
}
所以你的帖子价值存储在$value
.