处理Cookie的最佳方法

时间:2014-04-24 07:05:56

标签: javascript php web-applications cookies

我是开发Web应用程序的新手,喜欢学习最佳实践 我想知道如果使用JavaScript或PHP来处理cookie数据,处理cookie数据的最佳做法是什么?

1.您是否使用javascript获取cookie并将其传递给PHP以进行所有过滤?

2.您是否使用PHP来完成所有这些工作?

3.上述其中一项会改善表现还是有另一种方式?

3 个答案:

答案 0 :(得分:2)

  

应该使用JavaScript还是PHP来处理cookie数据?

为了使这更加通用,让我们称之为“客户端”(几乎完全是JavaScript)和“服务器端”(可以是PHP,JavaScript或任何其他语言)代码。

简短的回答是:这取决于您对cookie数据的处理方式。

大多数时候,处理cookie服务器端更简单。

有时,cookie中的信息需要是安全的,您无需从客户端代码访问它,因此您将在其上设置an http only flag,以便在遭受XSS攻击时损坏是有限的。

有时你会想避免使服务器往返(举一个简单的例子:你允许用户为你的网站选择不同的样式表。你不想在改变他们的偏好时重新加载整个页面。你。使用客户端代码更改当前加载的样式表,使用客户端代码将该首选项存储在cookie中。将来,当加载其他页面时,您可以使用服务器端代码设置不同的<link>元素。 )

  

您是否使用javascript获取cookie并将其传递给PHP以进行所有过滤?

您可以使用客户端代码设置cookie值,然后使用服务器端代码来读取它。使用JavaScript读取它然后使用一些非基于cookie的机制将其发送到服务器端代码是没有意义的。这只会使事情变得复杂并且更容易出错。

  

您是否使用PHP来完成所有这些工作?

只有使用PHP更好地完成所有工作

  

上述哪一项会改善表现还是有另一种方式?

正常情况下客户端代码与服务器端代码的问题:如果您还没有加载新页面,那么使用客户端代码通常会更快。

答案 1 :(得分:1)

这取决于应用程序的类型。

如果您的应用程序是基于PHP的完整请求作为后端,那么使用PHP可以提取cookie。

点击此链接http://www.w3schools.com/php/php_cookies.asp

或者,如果您的应用程序遵循REST体系结构,或者您希望使用Ajax将数据发送到后端。然后使用javascript / Jquery获取cookie值并将其发送到PHP或任何其他语言的后端服务器。

检查此链接以了解如何使用jquey.cookie.js插件访问Cookie: https://github.com/carhartl/jquery-cookie

答案 2 :(得分:1)

在处理cookie时,使用javascript或PHP并不重要,它只取决于何时访问/操作它们更有利。服务器端的东西似乎总是更安全,但cookie始终是可访问的,客户端或服务器端,所以它并不重要。您可以在PHP中创建一个cookie:

setcookie($cookieName, $cookieValue, time() + 3600);

设置一小时的cookie,然后您可以通过带有数组表示法的$ _COOKIE超全局数组访问它,例如

$var = $_COOKIE[$cookieName];

但是,请注意,如果未在浏览器中启用Cookie,则此操作无效,例如当有人使用隐身模式时。

在javascript中,您可以像这样设置Cookie:

document.cookie="cookiename=cookievalue";

但是,javascript中的cookie都被连接为document.cookie中的一个大字符串,因此将它们分解为普通数组的方法是使用split函数,例如:

  var arr = [];
  function getCookieArray() {
     var value = "; " + document.cookie;
     var parts = value.split("; " + name + "=");
     if (parts.length == 2) return parts.pop().split(";").shift();
  }

您可以在此处找到有关此内容的更多信息http://www.w3schools.com/js/js_cookies.asp 所以,请记住,cookie不是用于存储敏感数据。它们通常用于存储偏好,但绝不是人们无法访问的任何内容。