为Remember Me设置Cookie-PHP与Javascript


Setting Cookies for Remember Me - PHP vs Javascript

我一直在关注这个SO问题和这个SO问题,以设置Remember Me。然而,当我在谷歌中调出Cookie时,我可以用PHP和Javascript的方法来完成。哪种方法更好,还是我需要同时使用这两种方法?我有PHP和Javascript的代码库,我需要一个起点。我看到了大量关于javascript与php for cookie的SO文章,但这不是我想要的。。我知道服务器端和客户端编程之间的区别以及cookie是什么……但看不到关于如何设置/检索cookie的明确答案。我的假设是:

用于设置cookie:

当用户登录并设置"记住我"时,请使用PHP。尽管客户端在这一点上拥有控制权,但凭据必须传递回PHP进行验证。验证完成后,设置cookie并存储令牌。

用于检查cookie:

使用PHP,因为当用户第一次从你的web应用程序请求页面时,PHP会首先被调用,所以请检查那里的cookie,并确定要发送给用户的数据。

所以我猜PHP是双向的。

如果我是对的。。。如果是,javascript cookie的用途是什么?

相关

W3学校-PHP Cookies

PHP.net

  • PHP.net-Cookie费
  • PHP.net-setcookie()

Javascript cookie通常用于根据用户偏好设置页面上元素的位置/颜色。例如,一个网站有几个不同的主题(例如"深色"、"浅色"),并且页面侧面有更改当前主题的按钮,该网站可能会存储用户使用cookie选择的主题,这样用户下次访问该网站时,页面主题将是相同的。这些信息也可以存储在服务器端,但出于隐私原因,最好存储在客户端,尤其是当用户在网站上没有帐户时。

底线是,您应该对任何对网站功能至关重要的cookie使用php,并对网站的表面方面(如主题)使用javascript cookie。

如果Javascript不可用,Javascript方式将不起作用,而在服务器端设置cookie则保证有效,除非用户明确阻止了cookie。用javascript(通过document.cookie)操作cookie不是一种有趣的体验,而PHP提供了$_cookie(以及$_SESSION,它在最常见的使用模式中间接依赖于cookie),处理起来要简单得多。PHP中的cookie集可以在Javascript中访问,除非另有规定(我将了解),我不知道在Javascript中处理安全cookie(通过https发送)会是什么样子,但我认为这不会令人愉快。

只有使用服务器端技术设置Cookie时,才能将其设置为HTTP。设置后,仅支持HTTP cookie的浏览器将拒绝访问javascript的cookie。这一点很重要,因为javascript可以用来窥探cookie并窃取其内容,将其发送给窃听者。仅HTTP cookie可防止此类滥用。

简而言之,我会使用PHP来设置cookie。