【问题标题】:Save user form input info for later visits with PHP cookies?使用 PHP cookie 保存用户表单输入信息以供以后访问?
【发布时间】:2013-04-26 01:33:53
【问题描述】:

基本上我想在 PHP 中创建一个 cookie,它可以记住用户在表单中输入的内容(指向单独的页面),这样无论何时他们回到页面,表单都已经预先填充了他们的任何信息第一次就放进去。

我到处寻找,并没有真正找到如何做到这一点的好答案。这就是我的代码现在的配置方式(不起作用)。

PHP:

$fname =  $_POST['fname'];
$lname = $_POST['lname'];

if( ( $fname != null ) and ( $lname != null ) )
{
  setcookie( "fname", $fname, time() + 36000 );
  setcookie( "lname", $lname, time() + 36000 );
  exit();
}
?>

HTML:

<form method="post" action="hidden.php">
<p>First Name: <input type="text" maxlength="40" name="fname" id="fname" value="<?php if(isset($_COOKIE['fname'])){echo $fname;} else {echo "";} ?>"/></p>
<p>Last Name: <input type="text" maxlength="40" name="lname" id="lname" value="<?php if(isset($_COOKIE['lname'])){echo $lname;} else {echo "";} ?>"/></p>

任何介意告诉我我做错了什么以及如何解决它?谢谢!

【问题讨论】:

  • 我不知道 cookie 在 PHP 中是如何工作的,但看起来您设置了 cookie,但在页面加载时从未从 cookie 中取回值。尝试在页面加载时将 cookie 值加载到 fname 和 lname 变量中。
  • 是的,PHP cookie 和 JavaScript cookie 的工作方式完全不同。在 PHP 中,表单中的 "" 相当于我的 "getcookie" 函数。不过谢谢!
  • 我从未在 javascript 中使用过 cookie,我认为您误解了我的评论...我的意思是您有一个名为 $fname 的变量,您使用“setcookie”将其放入 cookie 但无处在您的代码中,您是否从 cookie 中提取值并将 $fname 的值设置为 cookie 中的值
  • 好吧,我明白你在说什么了。无论出于何种原因,该帖子没有显示我的一些代码,所以我只是对其进行了编辑以表明我从一开始就定义了这些变量。
  • 查看@RST 的回答,您需要从 COOKIE 数组中获取值。

标签: php html forms cookies


【解决方案1】:
<?php if(isset($fname))...

应该是

<?php if(isset($_COOKIE['fname']))

lname 命令也是如此

编辑(不确定这是否是您的设置,但如果您将下一个代码放入文件中,它应该可以工作)

<?php
$fname =  $_POST['fname'];
$lname = $_POST['lname'];

if( ( $fname != null ) and ( $lname != null ) )
{
  setcookie( "fname", $fname, time() + 36000 );
  setcookie( "lname", $lname, time() + 36000 );
}

echo "post fname ".$_POST['fname']."<BR>";
echo "post lname ". $_POST['lname']."<BR>";
echo "cookie ". $_COOKIE['fname']."<BR>";
echo "cookie ". $_COOKIE['lname']."<BR>";
?>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<form method="post" action="hidden.php">
<p>First Name: <input type="text" maxlength="40" name="fname" id="fname" value="<?php if(isset($_COOKIE['fname'])){echo $_COOKIE['fname'];} else {echo "";} ?>"/></p>
<p>Last Name: <input type="text" maxlength="40" name="lname" id="lname" value="<?php if(isset($_COOKIE['lname'])){echo $_COOKIE['lname'];} else {echo "";} ?>"/></p

<input type="submit" name="submit" value="Send">
</body>
</html>

【讨论】:

  • 我已经尝试过了,因为我发布了这个,但它仍然无法正常工作?
  • hidden.php 中的 phpcode 是表单提交数据的文件吗?该文件中是否还有其他代码?值是否正确传输?您是否回显了 $_POST 变量来对此进行测试?
  • 尝试将此命令 {echo $fname;} 设置为 {echo $_COOKIE['fname']}
  • 改变这个命令 if(isset($_COOKIE['fname'])){echo $fname;} else {echo "";} 到 if(isset($_COOKIE['fname']) ){echo "cookie set";} else {echo "no cookie set";}
  • 这只会呼应文字“cookie set”或“no cookie set”。我觉得我应该说我已经尝试过弄乱“如果设置了 cookie,则执行此操作,如果没有设置则执行此操作”足以确定这行代码没有问题,它与配置有关cookie 本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 2012-09-19
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多