有什么方法可以存储在 cookie 中提交的数据,并且当再次加载相同的表单时,文本字段会填充 cookie 中存储的值?
我有一个购物网站,我不想要求客户注册,所以当他们订购一件商品并再次回来订购另一件商品时,表格会预先填写他们的信息。
我环顾四周,但似乎没有人提到这种事情。
是的,您可以在客户端的浏览器端存储 cookie 供以后使用。此类 cookie 称为“持久性 cookie”。它们会一直存储到客户清除其浏览数据为止。
要了解有关它们的更多信息,请参阅:
您是否尝试过将 cookie 过期时间设置为足够长的时间?例如像这样的一年?:
setcookie( "myCookie", $myValue, strtotime( '+1 year' ) );
这是一种非常过时的方式来完成你需要的事情,它容易出现错误和隐私问题。任何可以共享的计算机上的可怕想法。
如果你想做类似的事情,那么创建一个带有会话 ID 的持久 cookie。然后使用该会话 ID 识别您的客户,并使用该会话 ID 作为参考从数据库中存储/读取所有数据。
此外,让您的客户清楚地知道您正在使用持久性 cookie 来记住他的数据,并给他一个带有“不记得我的数据”选项的按钮。
您可以$_COOKIE[]
用来访问和检索存储在 cookie 中的信息。
在表单上添加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 中存储任何身份验证信息(例如密码)或任何其他敏感信息(例如信用卡号)。