PHP中会话相对于cookie的优势


Advantages of Sessions over Cookies in PHP

那么,我想我有一个基本的概念,什么是cookie和session。cookie存储在客户端,session存储在服务器端。但我想知道的是使用会话比使用cookie有什么优势?会话仅仅用于在页面之间共享数据吗?

当您不希望客户端能够弄乱数据时,会话是一个更好的主意。例如,使用会话变量来存储当前用户的User ID是可以的。然而,使用cookie是一个巨大的安全漏洞,因为一个不太聪明的人可以欺骗其他用户的id并获得其他帐户的访问权限。

会话不依赖于用户允许cookie。相反,它们的工作方式就像一个令牌,允许用户在打开浏览器时访问和传递信息。会话的问题是,当您关闭浏览器时,也会丢失会话。所以,如果你有一个需要登录的网站,这不能像保存cookie一样保存为会话,用户每次访问都会被迫重新登录。

你当然可以两全其美!一旦你知道了每一个的作用,你就可以使用cookie和会话的组合,使你的网站完全按照你想要的方式工作。

参考:http://php.about.com/od/learnphp/qt/session_cookie.htm

使用cookie进行会话标识。您不会在cookie中设置所有重要信息,因为用户可能会混淆这些信息。会话中的数据更安全。

cookie的数据可以被修改,因为数据存储在本地(客户端),而会话的数据存储在服务器端,不能被修改(客户端)。

然而,PHP会话在浏览器上设置了一个cookie,这样PHP就可以引用cookie上的会话密钥,并给您相应的会话。这意味着如果有人得到了你的会话密钥,他们可以在他们的浏览器中添加一个cookie,基本上劫持了你的会话。

看一下:PHP - Sessions vs Cookies

sessions作为临时信息持有者可以隐藏信息,而cookies同时作为临时和长期信息持有者。在会话和cookie之间的区别变得明显之后,为网站做出正确的选择就相当简单了。虽然会话似乎比cookie更容易使用,但永远不要怀疑使用cookie的功能和易用性。

两者都用

只使用cookie来标识会话。Cookie数据随每个请求一起发送(即使是在web服务器上的图像)。将cookie中的数据最小化意味着通过网络发送的数据更少。

将所有其他应用程序数据存储在会话中。谨慎地保持会话数据较小。如果有来自许多不同用户的大量请求,那么会话中的大量数据将使服务器不堪重负。将大数据存储在User对象中,或者关联到User的相关对象中。

PHP会话在客户端浏览器中通过cookie实现。