【问题标题】:Storing cookies for future form submissions为将来的表单提交存储 cookie
【发布时间】:2013-05-20 22:32:20
【问题描述】:

有什么方法可以将提交的数据存储在 cookie 中,当再次加载相同的表单时,文本字段会填充 cookie 中存储的值?

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

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

【问题讨论】:

  • 你是对的,你可以使用持久性cookies来存储数据。
  • 您应该非常小心地在 cookie 中存储个人信息。
  • @MikeRobinson:这会构成安全威胁吗?我将存储姓名、电子邮件和地址
  • @YosefNaser 您可以加密 cookie 数据。 Link
  • @YosefNaser 这绝对是个问题。这个问题指出了安全问题(stackoverflow.com/questions/706858/…),但我的观点更简单。如果您的用户发现您正在存储这些信息,那么少数人最终会对这个概念感到非常不满。一些用户非常重视隐私,这不是您应该在网上商店冒险的事情。最后,这不会干扰自动填充吗?

标签: php cookies


【解决方案1】:

是的,您可以存储 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' ) );

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,但是常规类型的 cookie 有一定的“寿命”,之后它们就会过期。您必须使用持久性 cookie 才能执行 OP 要求的操作。
    【解决方案3】:

    这是一种非常过时的方式来满足您的需求,容易出错和隐私问题。在任何可以共享的计算机上的想法都很糟糕。

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

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

    【讨论】:

      【解决方案4】:

      在表单上添加一个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 中存储任何身份验证信息(如密码)或任何其他敏感信息(如信用卡号)。

      【讨论】:

      • 我要试试这个 Bhashit,我不会存储任何敏感信息、姓名、电子邮件和地址。
      猜你喜欢
      • 2019-09-12
      • 1970-01-01
      • 2018-03-15
      • 2012-11-17
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 2021-12-13
      相关资源
      最近更新 更多