Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用cookie提交PHP后保留表单值_Php_Forms_Cookies - Fatal编程技术网

使用cookie提交PHP后保留表单值

使用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

我正在寻找一种方法,以保持表单值提交后与cookies(在进入第2页,并返回到第u页的形式)。我真的很努力,但我需要你们的帮助

我试过了,但没用

<? 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>