2010-04-14 32 views
0

我正在制作一个网站,并将允许客人投票/发表评论。我应该如何去存储用户信息?如何为客人创建个人资料?

如果有人删除cookie(我通过cookie处理访客用户),我不喜欢要清除的信息。如果某人清除cookie并立即更改IP,则只有访客用户信息应该丢失。

我应该在php中使用session吗?

+0

你几乎解释了问题并证明你自己明白了解决方案,现在是时候构建它了:) – Kemo 2010-04-14 15:16:27

回答

0

为了可靠地保存用户信息,您应该根据Cookie等将其存储在服务器上,并使用某种用户标识.PHP会话仅支持会话,因此有助于维护会话中的身份。一旦用户关闭浏览器并重新启动它,PHP会话可能会消失。类似的cookie也可能不见了。

依靠IPv4地址,但不会让你很远。即使无视动态IP地址的人们(每次访问互联网时他们都有不同的IP地址),也有很多人通过NAT共享IP。你不想为一个人的整个办公室分享一个用户吗?

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

0

饼干可以比会话存放时间更长。当浏览器窗口关闭时,会话将会消失。

0

使用SQL数据库是使数据保持在服务器上并可以被其他用户查看的唯一方法。正如你已经知道的MySQL是流行的,但如果你没有任何可用的数据库,SQL Lite是一个不错的选择,它不需要你在服务器上安装任何东西,只需在PHP confic中启用SQL Lite即可。

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

PHP会话被认为是实现登录的简单而安全的方式,试图用自己的cookies手动重新发明轮子会导致安全问题并为您提供更多的工作。