我是开发Web应用程序的新手,喜欢学习最佳实践 我想知道如果使用JavaScript或PHP来处理cookie数据,处理cookie数据的最佳做法是什么?
1.您是否使用javascript获取cookie并将其传递给PHP以进行所有过滤?
2.您是否使用PHP来完成所有这些工作?
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不是用于存储敏感数据。它们通常用于存储偏好,但绝不是人们无法访问的任何内容。