【问题标题】:How to create profiles for guests?如何为客人创建个人资料?
【发布时间】:2010-04-14 23:40:19
【问题描述】:

我正在制作一个网站,并允许客人投票/评论。我应该如何存储用户信息?

如果有人删除 cookie,我不希望信息被清除(我猜是通过 cookie 处理来宾用户)。如果有人立即清除 cookie 并更改 ip,那么只有来宾用户信息应该丢失。

我应该为此使用 php 中的会话吗?

【问题讨论】:

  • 你几乎解释了问题并证明你自己理解解决方案,现在是时候构建这个东西了:)

标签: php


【解决方案1】:

为了可靠地保存用户信息,您应该使用某种基于 cookie 等的用户 ID 将其存储在您的服务器上。Php 会话仅支持会话,因此有助于在会话中维护身份。一旦用户关闭他的浏览器并再次启动它,PHP 会话可能会消失。同样,cookie 也可能会消失。

然而,依靠 IPv4 地址不会让您走得太远。即使不考虑使用动态 IP 地址的人(每次他们访问互联网时,他们都有不同的 ip),也有很多人通过 NAT 共享 IP。您不想为整个办公室共享一个用户吗?

因此,简而言之,除了普通 cookie 之外,您还可以使用 PHP 会话(以防用户禁用 cookie),但如果他是匿名的并且他决定删除他的 cookie,则您无法恢复他的身份。请记住,水下 PHP 会话通过 cookie 工作(只有在禁用 cookie 时才回退请求参数)

【讨论】:

    【解决方案2】:

    Cookie 的存储时间可能比会话长。关闭浏览器窗口时会话将终止。

    【讨论】:

      【解决方案3】:

      使用 SQL 数据库是您将数据保存在服务器上并可供其他用户查看的唯一方法。正如你已经知道 MySQL 很受欢迎,但如果你没有任何可用的数据库,SQL Lite 是一个不错的选择,因为它不需要你在服务器上安装任何东西,只需在 PHP confic 中启用 SQL Lite。

      在您的数据库中创建一个“用户”表,将密码存储为 SHA-256 哈希值(不是原始值,不是 MD5)。当他们登录时通过session_start() 使用PHP 会话,并且在成功登录后确保也使用session_regenerate_id()(它可以防止已知的用于窃取登录的漏洞利用)。

      PHP 会话被认为是实现登录的一种简单且安全的方式,尝试使用您自己的 cookie 手动重新发明轮子会导致安全问题并为您带来更多工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-26
        • 2021-02-25
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 2018-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多