为什么每次刷新页面时都会丢失所有表单数据?我发布了上一页的数据并使用echo $_POST['test'];
它显示了所有内容,当我刷新页面时,没有任何内容被打印出来。
我也尝试过使用会话,但刷新页面时也会覆盖会话。
<?php
SESSION_START();
$_SESSION['coupons_count'] = $_POST['points'];
$_SESSION['dateofcoupon'] = $_POST['dateofcoupon'];
$_SESSION['timeofcoupon'] = $_POST['timeofcoupon'];
$_SESSION['points'] = $_POST['points'];
$_SESSION['storename'] = $_POST['storename'];
?>
<h2>Coupon Details</h2>
<form id="form1" method="post">
<span style="width:120px;"><strong>Restaurant:</strong></span> <?php echo $_SESSION['storename']; ?>
<strong>Date:</strong> <?php echo $_SESSION['dateofcoupon']; ?>
<strong>Start Time:</strong> <?php echo substr($_SESSION['timeofcoupon'], 0, -10); ?>
<strong>End Time:</strong> <?php echo substr($_SESSION['timeofcoupon'], 8, -2); ?>
<strong>Coupons:</strong> </php echo $_SESSION['points']; ?>
答案 0 :(得分:2)
你的情景:
1)从$_POST
添加空值(没有错误?因为已经定义了索引)
2)您发送表单数据
3)将$_POST
个变量保存回会话
4)刷新页面/删除所有$_POST
变量
5)再次分配空变量
所以基本上你必须检查$_POST
个变量是否存在,只保存:
if (isset($_POST['points'])) {
$_SESSION['coupons_count'] = $_POST['points'];
}
// repeat for all variables
答案 1 :(得分:0)
这是网络表单的正确行为。您有一个表单,您正在填写值并将其发布到自身,然后如果您将刷新页面,因为您没有再次发布任何值,因此您会看到显示。
如果要在多次刷新期间保持值的持久性,请将表单发布到单独的页面[最简单的解决方案];
就像你可以制作一个页面formdata.php并将其发布到formaction.php。 使用action =&#34; formaction.php&#34;在表单中添加操作标记 然后多次刷新操作页面,您将看到所有变量持久。
答案 2 :(得分:0)
最后,我最终以一种奇怪的方式使用。
if($_POST['points'] != null)
{
$_SESSION['coupons_count'] = $_POST['points'];
$_SESSION['dateofcoupon'] = $_POST['dateofcoupon'];
$_SESSION['timeofcoupon'] = $_POST['timeofcoupon'];
$_SESSION['points'] = $_POST['points'];
$_SESSION['storename'] = $_POST['storename'];
}
我知道,这不是一种专业的方式,但我正在寻找一个快速提示摆脱这个问题。
答案 3 :(得分:0)
我不确定你在抱怨什么。如果您在刷新页面时没有再次发布值(并且您的浏览器应该询问您是否应该再次发送表单),那么您不能指望$ _POST中包含任何值。
无论如何,这可能对你有所帮助:
$pairs = array(
"coupons_count" => "points",
"dateofcoupon" => "dateofcoupon",
"timeofcoupon" => "timeofcoupon",
"points" => "points",
"storename" => "storename",
);
foreach ($pairs as $sessionVar => $postVar) {
if (isset($_POST[$postVar])) $_SESSION[$sessionVar] = $_POST[$postVar];
}
会话变量将被覆盖仅在时定义了相应的$ _POST值。