【问题标题】:Which field type for store cookie in table?在表中存储 cookie 的字段类型是什么?
【发布时间】:2017-04-23 11:37:42
【问题描述】:

我想为我的网站实现记住我的功能,为此我想使用 Gustonez 的代码:PHP Sessions Login with remember me

但我不知道 cookie ($cookiehash) 的表的字段类型,一个 varchar?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    是的,您需要使用varchar,因为哈希必须包含字母数字字符。如果您使用md5sha1 来生成哈希,那么您可以将特定长度应用于您的哈希字段。

    您可以通过strlen php 函数计算生成的哈希的长度。

    例子:

    echo strlen('hash');
    

    【讨论】:

      【解决方案2】:

      这里你可以在Cookies中存储任何变量类型,你不能在PHP中指定Datatype。您可以在 cookie 或会话中分配值。

      <?php
      $cookie_name = "user";
      $cookie_value = "Suthagar";
      setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
      ?>
      

      【讨论】:

        【解决方案3】:

        但我不知道 cookie 表的字段类型

        为什么需要将 cookie 存储在数据库中?这显然是错误的做法。 Cookie 存储在客户端计算机上(在浏览器沙箱下),记住我 功能也是如此。因此,当最终用户下次想要登录时,他不必再次填写登录表单。将 cookie 值存储在数据库中是没有意义的。

        澄清一下,如果这不是你在说的。

        【讨论】:

        • cookie存储在客户端机器是的,但是为什么其他问题的用户将cookie的副本存储在数据库中?
        • @AgainMe,这真的很奇怪,从未见过有人这样做,甚至我也不会这样做。请记住,尽管 b/w cookie 和会话存在差异,并且会话可以存储在数据库中,因为会话是服务器端进程。
        • 但是您需要将存储在客户端机器中的cookie与您的服务器进行比较,那么这个cookie应该保存在哪里?
        • @AgainMe,看来您是误会了。用于比较您的客户端 cookie 不需要存储在数据库中。您可以很好地读取客户端 cookie,因为它是由您或您的程序存储的。
        • 我理解您对此的看法,但我看到了很多实现,并且大多数将 cookie 保存在数据库中,如果未设置用户会话,则应用执行查询,检查是否在 db 上找到 cookie 并将其与客户端进行比较。例如:stackoverflow.com/questions/3128985/… 不知道你能不能找到这个安全的,看来你在这个话题上比我更有经验,所以我很高兴听到你的意见,谢谢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-31
        相关资源
        最近更新 更多