存储cookie以供将来提交表单

时间:2013-05-20 13:59:00

标签: php cookies

有没有办法存储在cookie中提交的数据,当再次加载相同的表单时,文本字段会用cookie中的存储值填充?

我有一个购物网站,我不想要求顾客注册,所以当他们订购商品并再次回来订购另一件商品时,表格会预先填写他们的信息。

我环顾四周,但似乎没有人提到这样的事情。

4 个答案:

答案 0 :(得分:2)

是的,您可以存储Cookie以供以后在客户端的浏览器端使用。这种cookie称为“持久性cookie”。存储它们直到客户端清除其浏览数据。

要了解有关它们的更多信息,请参阅:

  

http://www.webopedia.com/TERM/P/persistent_cookie.html

     

How do I create a persistent vs a non-persistent cookie?

     

http://en.wikipedia.org/wiki/HTTP_cookie

您是否尝试过将Cookie到期时间设置为足够长的时间?例如这样的一年?:

setcookie( "myCookie", $myValue, strtotime( '+1 year' ) );

答案 1 :(得分:1)

您可以使用$_COOKIE[]来访问和检索存储在Cookie中的信息。

答案 2 :(得分:1)

这是完成所需内容的一种非常过时的方式,它容易出错和隐私问题。任何可以共享的计算机都有可怕的想法。

如果你想做类似的事情,那么用会话ID创建一个持久性cookie。然后使用该会话ID识别您的客户,并使用该会话ID作为参考来存储/读取数据库中的所有数据。

此外,让您的客户清楚知道您使用持久性cookie来记住他的数据,并给他一个“不记得我的数据”选项的按钮。

答案 3 :(得分:0)

在表单上添加onsubmit事件侦听器。使用您认为合适的方式阅读表单中的字段。现在,只要提交表单,您就可以执行以下操作:(只是一个示例,使用jQuery-cookie

$('#yourFormId .fieldClass').each(function() {
    // a cookie that expires in 30 days.
    $.cookie('somePrefix' + $(this).attr('id'), $(this).val(), {expires: 30});
});

接下来,页面加载:

$(function() {
     $('#yourFormId .fieldClass').each(function() {
         var value = $.cookie('somePrefix' + $(this).attr('id'));
         $(this).val(value);
     });
});

更好的是,无论您使用哪种服务器端语言,都可以让您在下一次加载时访问cookie值。因此,您可以使用Cookie直接填写表单字段。例如:如果您使用的是PHP,则可以执行以下操作:

<input id="someId" value="<%php echo $_COOKIE['somePrefixsomeId']; %>" />

虽然以这种方式存储用户名或电子邮件可能没问题,但请不要将任何身份验证信息存储在cookie中(例如密码)或任何其他敏感信息(例如信用卡号)。