$ _SESSION v。$ _COOKIE

时间:2012-07-02 01:46:49

标签: php session cookies

几周前我在创建登录页面时了解到$_SESSION。我可以成功登录并将其与变量一起使用。目前,我正在尝试了解$_SESSION$_COOKIE。如果我错了请纠正我,我可以在登录和移动页面时使用$_SESSION。使用$_COOKIE时,它会用于记住我上次访问和偏好的时间。

涉及cookie的另一个问题是,当网站使用广告(例如:Google AdSense)时,他们会使用Cookie来跟踪访问者点击广告的时间,对吗?

我可以同时使用($_SESSION& $_COOKIE)吗?我在某地读到你可以存储session_id作为cookie的值。

另外,我读到了安全性,让我找到了这个:What do I need to store in the php session when user logged in?。当用户回到网站时使用session_regenerate_id是否有用?

而且:How to store a cookie with php涉及uniqid

对于想要了解登录信息的人,我使用电子邮件和密码。这样,用户就可以更改用户名。

我期待从任何想要分享他们知识的人那里学到更多关于这两个的知识。如果我问了太多问题,你可以回答你有更多经验的问题。

如果您需要更多信息,请询问,因为我可能忘记包含一些内容。

谢谢。


找到了这个:What risks should I be aware of before allowing advertisements being placed on my website?

1 个答案:

答案 0 :(得分:8)

简单来说,$_SESSION$_COOKIE是不同的。 两者都是php全局,但使用cookie时没有语言限制。 $_SESSION是将数据存储在服务器中,同时将会话ID存储为cookie。 $_COOKIE浏览器向服务器发送的Cookie。这是主要的区别。如果客户端浏览器禁用了cookie,则会话无效。

- 安全 -

如果您检查了浏览器发送的请求标头,您会注意到每个请求都包含cookie信息。可以通过剪切网络通信来跟踪它们。 拥有更好工具的任何人都可以编辑cookie数据。 永远不会使用Cookie来存储密码! 如果您使用会话,则密码位于服务器中,并且只有会话ID cookie将存储在客户端中,减少安全问题。查克诺里斯仍然可以劫持一个会议。

- 效果 -

如果您在浏览器中存储了5个cookie,其中包含200个字节,则每个请求的成本约为1 KB,无论它是jpg文件还是页面实际上需要cookie信息。因此,这会直接影响您的网站对最终用户的执行速度。

如果使用会话,则服务器具有此1 KB数据,而客户端在每个页面请求中发送会话ID。 通过将静态文件转移到另一个无cookie的域,您可以很聪明。

- 终身 -

会话及时清除。因此,如果您想长时间保存某些内容,请使用Cookie。 "记住我"大多数网站的功能都是这样工作的(但它不会存储密码。只是会话信息 - 不要与会话ID混淆)。

底线, 会话和cookie是不同的类型。会话是相对安全的和服务器端存储。经常清理。 Cookie可以有更长的使用寿命,但它会影响性能(不是CPU / RAM - 加载时间),除非你不记得这一点。 如果有理由将1 KB存储为cookie,那就太奇怪了。

永远不要相信通过$_GET/POST发出的用户输入。同样关心$_COOKIE。 还有会话劫持。有人可以猜到其他人的会话ID,尽管几乎不可能做到。因此,首先在服务器端使用一些验证。