使用cookie提交PHP后保留表单值
我正在寻找一种方法,以保持表单值提交后与cookies(在进入第2页,并返回到第u页的形式)。我真的很努力,但我需要你们的帮助 我试过了,但没用使用cookie提交PHP后保留表单值,php,forms,cookies,Php,Forms,Cookies,我正在寻找一种方法,以保持表单值提交后与cookies(在进入第2页,并返回到第u页的形式)。我真的很努力,但我需要你们的帮助 我试过了,但没用 <? php if (isset($_POST['Infos_test'])) { $expire = 8*3600; setcookie("Infos_test", $_POST['from']&|&$_POST['area_html'], time()+$expire); } ?> 我更喜欢在cook
<? php
if (isset($_POST['Infos_test']))
{
$expire = 8*3600;
setcookie("Infos_test", $_POST['from']&|&$_POST['area_html'], time()+$expire);
}
?>
我更喜欢在cookie之前使用会话变量。下面是一个示例代码:
在表单接收页面上:
session_start();
$_SESSION['from'] = $_POST['from'];
$_SESSION['area_html'] = $_POST['area_html'];
然后在另一页上:
<?php session_start(); ?>
<!-- here is your html header etc -->
From: <?php echo $_SESSION['from']; ?><br>
Area HTML: <?php echo $_SESSION['area_html']; ?>
请注意输入标记的类型以及将值插入文本区域的更改方式。您可以使用$\u session
变量而不是cookies在php会话中保存表单值
这里有几个教程可以帮助您做到这一点
只需在test.php中复制并粘贴此代码,然后运行并刷新它即可。。你会理解它是如何工作的
<?php
if (isset($_POST['sub'])) {
echo "Values from POST <br />";
echo "<pre>";
print_r($_POST);
echo "</pre>";
$post_arr = $_POST;
echo "<pre>";
print_r($post_arr);
echo "</pre>";
echo "<pre>";
print_r(serialize($post_arr));
echo "</pre>";
$expire = 8*3600;
setcookie("Cookie_Info", serialize($post_arr), time()+$expire);
}
if (isset($_COOKIE['Cookie_Info'])) {
$data = unserialize($_COOKIE['Cookie_Info']);
} else {
$data = array(
'from' => '',
'area_html' => ''
);
/* in above array add what ever fields in a form with same field name */
}
echo "This is what we get from cookie";
echo "<pre>";
print_r($data);
echo "</pre>";
?>
To view Cookie, it need browser refres one time <br />
<form name="test_form" method="post">
<input type="text" name="from" value="<?php echo $data['from']; ?>" /> <br />
<textarea rows="3" name="area_html" ><?php echo $data['area_html']; ?></textarea> <br />
<input type="submit" name="sub" value="Submit" />
</form>
要查看Cookie,它需要浏览器引用一次
如果您想将其存储在cookie中,那么后续操作或需要存储在会话或post方法中,请按照下面的回答将PHP代码放在输出的最顶端?必须在任何其他HTML输出之前设置Cookies。即使是空格字符也可以破坏它。即使是BOM表也可以破坏它(如果您使用notepad.exe为examle创建了文件并将其保存为utf8)。感谢您的回答,@jtheman它位于最顶端,但仍然不起作用:(@Rafee我已经尝试使用Cookie,但不起作用,我不知道是什么问题。我尝试过使用Cookie,但当我转到我的表单时,我没有找到“from”旁边的输入框,上面的数据也没有(它们消失了)。我得到的错误是“PHP致命错误:无法将stdClass类型的对象用作数组”用于行和“答案中有一个拼写错误,应该是
(不是$date
)。另外非常感谢Rafee我想给每个答案加上+1,但我没有足够的声誉,无论如何,谢谢大家:)它的工作原理是test.php,但当我尝试将您的代码包含在我的代码中时,第一个输入消失了,表单的其余部分也很奇怪。错误是:无法使用stdClass类型的对象作为数组。您可以显示您的代码,包括在哪里。请告诉我它显示的是哪种错误,只需稍加修改$\u SESSION['area\u html']=$\u POST['area\u html'];在同一页中感谢您的编辑,但我应该说它只在chrome上工作(但在firefox或opera中不工作)我试图激活Cookie,但它在其他导航器中仍然不起作用。问题在于我的表单会导致另一个脚本,当我单击“上一步”时,所有内容都会消失;我认为我可以使用chrome,但chrome会记住每一个输入而不引入代码。有什么想法吗?我想test.cgi
不是PHP文档,而是Perl脚本或类似内容?那么,您无法使用PHP设置Cookie或会话变量-这意味着无法回答这个问题,除非您无法将PHP代码添加到非PHP脚本中!有一种方法可以将变量会话从PHP传输到Perl,反之亦然。我的表单是一个PHP文件,但提交到Perl脚本。可能是我应该发布另一个关于这个的问题。
<?php session_start(); ?>
<!-- here is your html header etc -->
From: <?php echo $_SESSION['from']; ?><br>
Area HTML: <?php echo $_SESSION['area_html']; ?>
<input type="text" name="from" style="width:350px" value="<?php echo $_SESSION['from']; ?>" />
<textarea valign="top" name="area_html"><?php echo $_SESSION['area_html']; ?></textarea>
<?php
if (isset($_POST['sub'])) {
echo "Values from POST <br />";
echo "<pre>";
print_r($_POST);
echo "</pre>";
$post_arr = $_POST;
echo "<pre>";
print_r($post_arr);
echo "</pre>";
echo "<pre>";
print_r(serialize($post_arr));
echo "</pre>";
$expire = 8*3600;
setcookie("Cookie_Info", serialize($post_arr), time()+$expire);
}
if (isset($_COOKIE['Cookie_Info'])) {
$data = unserialize($_COOKIE['Cookie_Info']);
} else {
$data = array(
'from' => '',
'area_html' => ''
);
/* in above array add what ever fields in a form with same field name */
}
echo "This is what we get from cookie";
echo "<pre>";
print_r($data);
echo "</pre>";
?>
To view Cookie, it need browser refres one time <br />
<form name="test_form" method="post">
<input type="text" name="from" value="<?php echo $data['from']; ?>" /> <br />
<textarea rows="3" name="area_html" ><?php echo $data['area_html']; ?></textarea> <br />
<input type="submit" name="sub" value="Submit" />
</form>