php - $_SESSION 诉 $_COOKIE

标签 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?

最佳答案

简单来说,$_SESSION$_COOKIE是不同的。 两者都是 php 全局变量,但使用 cookie 时没有语言限制。 $_SESSION 就是将数据存储在服务器中,同时将 session ID 存储为 cookie。 $_COOKIE浏览器发送给服务器的cookies。这是主要区别。如果客户端浏览器禁用了 cookie, session 将无法工作。

- 安全性-

如果您检查浏览器发送的请求 header ,您会注意到每个请求中都有 cookie 信息。可以通过截断您的网络通信来跟踪它们。 任何拥有更好工具的人都可以编辑 cookie 数据。 切勿使用 cookie 来存储密码! 如果您使用 session ,密码在服务器中,只有 session ID cookie 会存储在客户端中,减少安全问题。 Chuck Norris 仍然可以劫持 session 。

- 性能 -

如果您在浏览器中存储 5 个 cookie,其中包含 200 个字节,那么无论是 jpg 文件还是实际需要 cookies 信息。因此,这直接影响您的网站对最终用户的执行速度。

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

- 生命周期 -

session 会及时清除。因此,如果您想长期保存一些东西,请改用 cookie。大多数网站的“记住我”功能都是这样工作的(不过,它不存储密码。只是 session 信息——不要与 session ID 混淆)。

归根结底, session 和 cookies 是不同的类型。 session 是相对安全的和服务器端存储。经常被清除。 Cookie 可以有更长的生命周期,但它会影响性能(不是 CPU/RAM -- 加载时间),除非你没有记住这一点。 不过,如果有理由将 1 KB 存储为 cookie,那就太奇怪了。

永远不要相信来自$_GET/POST 的用户输入。对 $_COOKIE 也做同样的处理。 并且存在 session 劫持。有人可以猜出其他人的 session ID,尽管这几乎是不可能的。所以首先在服务器端使用一些验证。

关于php - $_SESSION 诉 $_COOKIE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11287041/

相关文章:

PHP插入大量值问题

javascript - 带有 Cookie 的 Ng 模型

php - session id如何找到当前用户id

session - 为什么 ColdFusion SESSION 变量在几行之前被引用后是 "undefined"?

php - 使用 PHP 限制登录用户的内容访问

authentication - 如果我们尝试设置之前是 Secure 的 cookie,浏览器将忽略 Set-Cookie 响应 header

html - 有什么方法可以在我的 .exe 应用程序和 Firefox 之间进行通信吗?

javascript - 允许数字之间有点的正则表达式

php - 存储每个 Assets 的自定义参数的最佳方式

php - _e()缺少参数1