【问题标题】:Setting Cookies for Remember Me - PHP vs Javascript为记住我设置 Cookie - PHP 与 Javascript
【发布时间】:2012-02-07 01:01:18
【问题描述】:
我正在关注这个SO Question 和这个SO Question 来设置Remember Me。但是,当我在 Google 中提取 Cookie 时,我会使用 PHP 和 Javascript 的方式来执行此操作。哪种方式更好,或者我需要同时使用这两种方式?我有一个 PHP 和 Javascript 代码库,我需要一个起点。我看到大量关于 cookie 与 php 的 SO 文章,但这不是我要问的……我知道服务器端和客户端编程之间的区别以及 cookie 是什么……但看不到明确的回答如何设置/检索 cookie。我的假设是:
设置cookie:
当用户登录并设置“记住我”时使用 PHP。尽管此时客户端具有控制权,但凭据必须传回 PHP 进行验证。验证完成后设置 cookie 并存储 Token。
用于检查 cookie:
使用 PHP,因为当用户第一次从您的 Web 应用程序请求页面时会首先调用 PHP,因此请检查那里的 cookie 并确定要发送给用户的数据。
所以我的猜测是 PHP 是双向的。
如果我是对的...如果是这样的话,javascript cookie 的用途是什么?
相关
W3 Schools - PHP Cookies
PHP.net
【问题讨论】:
标签:
php
javascript
cookies
【解决方案1】:
Javascript cookie 通常用于根据用户偏好设置页面上元素的位置/颜色。例如,具有多个不同主题(例如“dark”、“light”)和用于更改页面一侧当前主题的按钮的站点可能会使用 cookie 存储用户选择的主题,以便下次用户访问该站点的页面主题将相同。此信息也可以存储在服务器端,但出于隐私原因,最好存储在客户端,尤其是当用户在网站上没有帐户时。
最重要的是,您应该将 php 用于对网站功能至关重要的任何 cookie,并将 javascript cookie 用于您网站的表面方面,例如主题。
【解决方案2】:
如果 javascript 不可用,则 Javascript 方式将不起作用,而除非用户明确阻止 cookie,否则服务器端设置 cookie 可以保证正常工作。在 javascript 中操作 cookie(通过 document.cookie)并不是一种有趣的体验,而 PHP 提供了 $_COOKIE(和 $_SESSION,它在其最常见的使用模式中间接依赖于 cookie),这更容易处理。在 PHP 中设置的 cookie 可以在 Javascript 中访问,除非另有说明(我会谈到),而且我不知道在 javascript 中处理安全 cookie(通过 https 发送)会是什么样子,但我不想象它会很愉快的。
只有使用服务器端技术来设置 Cookie 才能设置 HTTP。设置后,仅支持 HTTP cookie 的浏览器将拒绝访问 javascript 的 cookie。这很重要,因为 javascript 可用于窥探 cookie 并窃取其内容,将其发送给窃听者。仅 HTTP cookie 可防止此类滥用。
简而言之,我会使用 PHP 来设置您的 cookie。