我正在建立一个主要学习的论坛,但希望有一天会有几个用户。
我想知道你应该使用会话或cookie进行用户身份验证吗?
答案 0 :(得分:13)
Cookie是服务器通过标头发送的一小段任意数据;客户端将其存储在本地,并在下一个请求时将其发回。即使HTTP本身是无状态协议,该机制也可用于维护从一个请求到下一个请求的状态。 Cookie有两个缺点:它们只提供非常有限的空间(4 kB),并且由于它们是普通的来回发送,恶意客户端可以在将内容发送回服务器之前调整内容,从而有效地使cookie数据不受信任
会话是服务器上的文件,由唯一ID标识,该ID在客户端和服务器之间来回发送,以便服务器可以识别客户端。发送会话ID的最常用方法是通过cookie机制,但也可以通过URL传递会话ID(这就是为什么你经常看到包含URL参数'phpsessid'的链接)。这解决了上面提到的cookie的两个问题:服务器上的文件可以根据需要大小,并且客户端不能通过您自己的脚本访问数据。
通常使用基于cookie的会话来解决身份验证;经过身份验证后,将创建一个新会话,并在其中存储用户ID,并在注销时清除会话并生成新的会话ID。或者,您可以在会话中存储用户名和密码,并在每次请求时检查它们。
答案 1 :(得分:2)
使用会话。
会话由cookie标识,为true,但与在客户端cookie中存储用户身份验证信息不同,这对安全性有害。会话cookie在cookie中存储guid或hash,然后根据该会话识别会话(基于数据库或文件系统,具体取决于服务器的php设置)。
我建议您存储用户表中的主键,而不是任何其他信息,然后每次都查找用户信息 - 这样您就可以在登录时动态更改其验证状态或安全级别;否则他们必须在您的管理更改生效之前注销并重新登录 - IE。你无法启动他们。
此外,不要存储用户名/密码,因为这需要一个效率低于索引主键的查询(即使它们也被编入索引)。
答案 2 :(得分:1)
它们基本相同,携手合作。当您通过PHP创建会话时,会创建一个cookie来存储会话ID。另一方面,如果要实现“记住我”选项以防止用户每次登录,您将创建另一个cookie。
答案 3 :(得分:0)
我不是PHP专家,但Session和Cookie是相关的。在其他编程语言中,您可以选择创建“基于Cookie的会话”或“无Cookie会话”。我不确定PHP,所以也许你指的是不同的概念。
答案 4 :(得分:0)
我觉得使用会话比使用cookie更安全和容易。原因如下:
1)在cookie中我们只能存储一条信息,而在会话中我们可以存储任意数量的信息。
2)存储在用户的硬盘上,可以播放cookie。作为一个对黑客感兴趣的人,我已经做到了并收集了有关用户的有用信息。会话不能用于这样的事情。
答案 5 :(得分:0)
如果是少量数据(只有一个变量),我会使用cookie。这是代码......
setcookie("cookie name", "cookie value or variable name", time+ 3600, "\");
此代码设置的cookie适用于您的任何网页。它也将在一小时内删除它自己。
您还可以查看cookie是否存在(如果它已经删除了自己)。
if (isset($_COOKIE['cookiename']))
{
}
从cookie中收集值...
$value = $_COOKIE['cookiename']; //makes a variable for this cookie for your program