嘿,我有一个问题,我刚刚发现使用会话我正在使用firefox 23,但我已经检查了其他一些浏览器。 我创建了一个简单的代码,我已经创建了一个表单,只是打开了一个会话,我注意到,一旦我提交了表单,然后点击“返回”返回页面,我插入的信息不会保存在浏览器。
正常情况下,当您返回所提交的表格时,您输入的数据会被保存,您只需编辑输入并重新发送,但是当我在功能停止工作的页面上使用了session_start()时。
嗯,我猜也许浏览器也会在会话中保存表单数据,一旦我在php中使用它,它会以某种方式影响浏览器的正常工作方式。
我希望有人知道我怎么能解决,我知道你现在能用html5和javascript保存会话,但我宁愿用php做。
以下是我一直在使用的代码:
<?php
session_start();
// store session data
$_SESSION['name']= "name";
?>
<form method="post" action="index.php">
<input type="text" name="email" placeholder="Email" /><br />
<input type="text" name="name" placeholder="Name" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
答案 0 :(得分:0)
重新填写表单的浏览器就是浏览器。对于表单重新填充,这不是你应该依赖的东西。
您的PHP代码不会尝试通过在input value =“”属性中打印任何内容来重新填充表单。
通常,当提交表单时,程序员将验证提交的值,以某种方式存储它们(会话很好),如果他们需要它们重新出现在表单上,他们将像我描述的那样将这些值打印出来。 / p>
答案 1 :(得分:0)
我认为您希望将CORRECT字段放回到表单值中并删除不正确的字段。您不必使用会话:
<?php // formx.php
// accept POST variables
$fld1 = isset($_POST['fld1']) ? $_POST['fld1'] : "";
$fld2 = isset($_POST['fld2']) ? $_POST['fld2'] : "";
// edit variables
$errmsg = "";
if (!$fld1 == "") { if($fld1 <> "1") { $errmsg .= "fld1 is not 1<br />\n"; $fld1 = ""; } }
if (!$fld2 == "") { if($fld2 <> "2") { $errmsg .= "fld2 is not 2<br />\n"; $fld2 = ""; } }
if ($errmsg == "") { $errmsg = "Values accepted"; }
// output form
$body = <<<EOD
<html>
<body>
<div>%s</div><!-- errmsg -->
<form name="formnm" action="formx.php" method="post">
Enter "1" <input type="text" name="fld1" value="%s" /><br />
Enter "2" <input type="text" name="fld2" value="%s" /><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>
EOD;
printf($body, $errmsg, $fld1, $fld2);
?>