WordPress Cookies和PHP会话——你需要知道的一切
1994年,一位名叫Lou Montulli的计算机程序员首次发明了Cookies。没有他们,网络将会是一个完全不同的地方。无论是登录WordPress网站后端,还是关闭讨厌的弹出窗口,你每天都在使用cookie并与之互动(即使你没有意识到)。
现在,你可能已经猜到,当我们提到饼干时,我们指的是用来存储网站上重要访客信息的饼干,而不是美味的巧克力片。
今天,我们将深入探讨cookie和PHP会话这个有时令人困惑的话题。具体来说,你需要了解WordPress是如何使用它们的,以及你在托管你的网站、定制代码或使用第三方插件时应该注意的一些常见问题(尤其是作为一名开发者)。在我们看来,这个话题讨论得还不够。
什么是曲奇?
cookie(也称为web cookies、跟踪cookie、HTTP cookie、浏览器cookie)是用户的浏览器(Chrome、Firefox等)存储的一小段数据。)当他们访问网站时。它包含有关浏览活动的信息,通常用于个性化用户体验或用于认证和验证目的。会话cookie和持久cookie是常见的cookie类型。
Cookie的类型
WordPress核心如何使用Cookie?
第三方WordPress插件和主题如何使用Cookie
Cookie和WordPress缓存。
如何查看和清除Cookie
GDPR和饼干
PHP会话
Cookie的类型
通常,设置两种不同类型的cookie:会话cookie和持久cookie。
会话Cookie
会话cookie也称为临时cookie,是临时的。它们没有附加截止日期,只存储用户在单个会话期间所做的事情的信息。会话只是当有人访问网站时随机生成/分配的唯一值。会话cookie临时存储在内存中,并在浏览器关闭或会话结束时自动删除。
永久Cookie
正如您可能已经猜到,持久性cookie是那些包含截止日期的cookie。这些文件会持续更长时间,并存储在磁盘上,直到过期或被用户手动清除。这些有时被称为“跟踪cookie ”,因为这些是Google Analytics、AdRoll、Stripe等使用的cookie类型。
我们的返利联盟计划是另一个例子。当用户点击一个附属链接时,一个60天的cookie将被放在用户的浏览器中。这可以确保推荐者获得适当的信用,即使这个人已经多次关闭和重新打开他的浏览器。
WordPress核心如何使用Cookie?
当我们提到WordPress core时,我们只是指在安装任何第三方插件或主题之前组成开源项目的文件。这就是我们在自然状态下对WordPress的称呼。
现在你知道了什么是cookie以及不同类型的基础知识,让我们看看WordPress core为什么以及如何使用它们来使所有这些魔术在幕后发生。有趣的事实Cookie最初源于“神奇饼干”一词。
WordPress core使用cookie有两个不同的目的:
1.登录Cookie
登录cookie包含认证细节,当用户登录到WordPress管理仪表板时使用。根据WordPress Codex,设置了几种不同的会话cookie:
登录时,WordPress使用wordpress_[hash]cookie存储认证细节(仅在此/wp-admin/区域)。
登录后,WordPress设置WordPress _ logged _ in _[hash]cookie。这表示您登录的时间和您的身份。
当你尝试访问WordPress网站的后端时,你会检查上述两个cookie是否存在,并且没有过期。这就是你神奇地绕过wp-login.php页面的原因。
WordPress也设置WP-settings-{ time }-[uid]cookie。ID是WordPress用户数据库表中的用户ID。它存储个人仪表板和管理界面设置。
2.评论Cookie
默认情况下,cookie是在有人对博客帖子发表评论时设置的(有效期为347天)。因此,如果他们稍后回来,他们不必重新填写所有信息。存储以下三个cookie:
comment _ author _[哈希]
评论_作者_电子邮件_[哈希]
comment _ author _ URL _[哈希]
然而,由于GDPR最近改变了它的隐私政策,WordPress Core引入了新的工具来确保你让用户选择这些正在设置的cookie。这个设置(如果还没有设置的话)可以在WordPress management dashboard的“设置→讨论”下启用。选择“显示注释cookie”复选框以允许设置审阅者cookie。“选项。流行的Akismet插件也允许你显示隐私声明。
关于cookie如何选择加入的评论
第三方WordPress插件和主题如何使用Cookie
就像WordPress对某些功能使用cookie一样,你安装的第三方插件和主题也会设置cookie。他们中的大多数使用浏览器cookie和存储在wp_options表或他们自己的定制表中的数据库行的组合。这是因为WordPress是无状态的。
无状态应用程序是一种不保存在一个会话中生成的客户端数据以便在与该客户端的下一个会话中使用的应用程序。每个会话都作为第一次进行,响应不依赖于前一个会话的数据。–TechTarget
随着新的隐私法的出台,真正了解哪些cookie被设置,以及它们是否为访问者提供了选择加入的途径,变得比以往任何时候都更加重要。提示:并非所有cookie都需要选择加入。
以下是使用cookie的许多例子中的几个:
如果你的WordPress网站上有一个弹出框,访问者关闭了它,这通常会设置一个cookie,这样它就不会再出现了。
电子商务网站上添加到购物车的商品。存储cookie,以便购物车可以在您继续浏览网站时保存您的产品。
IP地理位置功能可以存储浏览该站点的访问者的IP地址和纬度/经度坐标。这通常用于向特定区域显示特定内容,甚至可能将用户重定向到不同的子站点。
使用链接缩短设备(如PrettyLinks插件)跟踪点击活动。
如果用户已经订阅,通信插件可能会为他们设置一个cookie,可以完全隐藏通信框。
基本上,WordPress网站上的任何操作或选择加入,通常都涉及到在后台的浏览器中设置cookie。当然,这样做的目的是试图通过验证来帮助改善浏览器体验或提供额外的功能。
WooCommerce Cookie
WooCommerce等电子商务插件通常会设置自己的附加cookie,以便买家可以轻松地将商品添加到购物车中,存储起来供以后结账,以及登录和注销帐户。
为了跟踪购物车数据,WooCommerce设置了以下三个cookie(cookie中不存储任何个人信息):
woocommerce _购物车_哈希
woocommerce_items_in_cart
wp_woocommerce_session_
前两个cookie包含关于购物车的信息,只帮助WooCommerce知道购物车数据何时发生变化。第三个cookiewp_woocommerce_session_包含每个客户的唯一代码,它对应于数据库中自定义wp_woocommerce_sessions表中的条目。
Wp_woocommerce_sessions表
Wp_commerce_session_ data之前存储在wp_options表中,但是在WooCommerce 2.5中引入了新的会话处理程序后,它们被移到了自己的自定义表中。这是为了提高性能、可伸缩性和会话管理。否则,你很快就会得到一个必须清理的臃肿的wp_options表。
简易数字下载Cookie
轻松数字下载默认使用WP_Session,它是存储在wp_options表中的浏览器cookie和数据库行的组合。下面是它设置的cookie:
购物车中的商品数量
Cookie和WordPress缓存。
谈到WordPress缓存,这就是事情变得棘手的地方。缓存本质上是一个存储来自一个请求的资源并为后续请求重用这些资源的过程。基本上,它减少了生成页面视图所需的工作量。虽然这对性能有好处,但是当涉及到cookie时,它会导致问题。
为什么?因为cookie是用来执行特定操作的,比如当你浏览WooCommerce网站时,保持你的购物车是满的。但是,如果页面是从缓存中提供的,那么PHP和数据库都不会做任何事情,服务器只会提供页面的静态副本。
那么,你能做什么?
1.使用JavaScript
第一种选择是使用JavaScript并动态更新页面上的内容。基本上,您有HTML占位符,并使用JavaScript通过API或ajax调用获取信息。
一个例子是通过使用JavaScript获取wp-api上的文章列表,然后在侧边栏中呈现它们,从而在WordPress侧边栏中加载文章列表。在这种情况下,您可以更新文章列表,而无需从缓存中清除页面,因为数据是动态生成的。
尽管这并不理想,但就性能而言,如果可能的话,缓存总是更好。但是,如果您必须保持一些内容动态,而页面本身可以保持静态(由缓存提供),这是一种方法——使用JavaScript通过API/ajax动态下拉页面这一部分的内容标题。然而,除非你能雇佣一个WordPress开发者来构建一个定制的JavaScript解决方案或者插件扩展,否则这个选项通常是不实际的。
2.用Admin-Ajax调用
Admin-ajax.php不能被缓存,所以你可以使用admin-ajax调用。无缓存AJAX小部件插件就是一个很好的例子。它进行admin-ajax调用,因此您不必担心与服务器级或第三方缓存解决方案的冲突。
但是,就像使用JavaScript一样,普通用户走这条路通常不可行。这还可能导致其他性能问题,比如高admin-ajax使用率和大量未缓存的请求。
3.从缓存中排除页面(当Cookie存在时)
除非您可以使用JavaScript或admin-ajax路由,否则当存在特定cookie时,从缓存中排除页面是最好的方法。这通常是我们推荐的,尤其是那些运行高动态网站的网站,如WooCommerce和Easy Digital Downloads。
在设置缓存时,我们要自动从缓存中排除一些WooCommerce和Easy Digital Downloads的页面设置(比如购物车、我的账户和结账)。比如设置服务器级的规则,让用户在检测到woo commerce _ items _ in _ cart cookie或者Edd _ items _ in _ cart cookies时,可以自动绕过缓存,保证结账过程的顺畅和同步。
当我们检测到有人登录WordPress时,我们也会监听相关的登录cookie,并将缓存设置为bypass。这可以防止后端仪表板被意外缓存。
默认情况下,我们不会将cookie从缓存中排除。根据我们的经验,大多数WooCommerce网站都没有任何问题。这也通过增加缓存命中率提高了性能,同时使用了更少的PHP工作线程。
但是,由于有许多不同的WordPress主题和插件配置,wp_woocommerce_session_如果有必要,我们可以从缓存中排除cookie。请联系我们的支持团队。因此,一旦用户将产品添加到购物车中,所有后续请求都不会从缓存中处理,从而增加了PHP worker的使用。
如果您需要从缓存中排除的自定义页面,请随时向我们的支持团队开具发票。同样,你必须小心排除。太多未缓存的页面确实会降低性能。
如何查看和清除Cookie
在网站上很容易查看和清除cookie。要查看特定站点上设置了哪些cookie,请浏览到该站点并单击顶部的小挂锁图标。然后点击“Cookie”。
Cookie正在使用中
然后深入这个网站的文件夹。在下面的例子中,你可以看到我们设置了一些WooCommerce cookie以及WordPress _ logged _ in _[hash]cookie。您还可以检查过期时间,以及它是永久cookie还是会话cookie(在浏览会话结束时)。
WordPress cookie
要删除cookies,只需点击单个cookies,然后点击“删除”按钮。你也可以在文件夹级别或者Chrome DevTools中这样做。
清除cookie还可以帮助您修复304错误。
或者,您可以在浏览器中搜索或清除所有cookie。
GDPR和饼干
GDPR是2018年5月25日生效的新隐私法。它旨在让公民重新控制他们的个人数据。
以下是为符合新法律而进行的变更的示例。当您第一次访问我们的网站时,您可能已经看到了,您会在屏幕底部看到“接受Cookies”提示。这是因为现在法律要求我们向用户提供选择加入和选择退出cookie集的方法。在不通知用户数据收集的情况下,你可以随心所欲地运行的日子已经一去不复返了。
如果您单击“接受Cookie”,将为用户设置所有Cookie。如果您点击“Cookie设置”,我们现在将提供一种方式来选择加入和退出任何您想要的Cookie。
设置Cookie
是不是很美?我们的cookie解决方案是由我们的开发者内部构建的,但是这里有一些有用的GDPR WordPress插件可以帮助你完成类似的事情。同样,Cookie只是完全符合GDPR一小部分。
PHP会话
PHP会话是标准cookie方法的替代方法。它仍然是一个cookie,但它被称为PHPSESSID,通常存储在Web服务器本身的/tmp/目录中。服务器知道给定会话与给定请求相关联的方式是它也存储在HTTP cookie中。
PHPSESSID HTTP cookie
这也可以在网站的HTTP标题下看到。
HTTP头设置cookie PHPSESSID
PHP会话很像普通会话。当用户关闭浏览器时它就结束了。
PHP会话的问题都归结为性能和缓存问题。存储在浏览器cookie中的信息必须随着每个请求来回反弹,以便服务器知道用户是谁。这意味着对于使用PHPSESSID的站点,主机必须将PHPSESSID设置为绕过缓存。但是,结果是PHPSESSID必须被设置为100%的时间绕过,因为与wordpress_logged_in不同,PHPSESSID是在每个PHP请求上设置的。
所以想象一下,wordpress_logged_in必须100%的时间被设置,以允许登录功能正常工作。这意味着即使注销的用户也必须有cookie,而且cookie必须是他们独有的。想象一下,为了让WordPress登录系统正常工作,这是必要的。在这种情况下,每个页面视图必须绕过缓存,以便wordpress_logged_in可以正确地为登录和注销的用户设置cookie。
这就是使用PHPSESSID的问题。因为它是在每次PHP请求时生成的,所以如果一个站点依赖于PHPSESSID cookie,那么主机将不得不设置PHPSESSID来100%地绕过缓存。否则,PHPSESSID最终将被缓存,任何依赖于它的函数都将被销毁。
我们不建议使用PHP会话。PHP会话还有其他应该考虑的安全风险。
如果你在你的网站上看到代码使用session_start,说明它使用的是PHP会话。
许多插件和主题开发者已经开始使用浏览器cookie和数据库行的组合(在wp_options表或他们自己的自定义表中)。如果您需要会话数据,这是一个更好的方法。
总结
现在我希望你比以前更了解WordPress cookie和PHP会话是如何工作的。Cookies目前是让世界运转的东西,它们对WordPress网站上发生的几乎所有事情都很重要。从保持我们登录,到确保顺畅的购物车体验,甚至确保弹出窗口保持关闭。
声明:
1,本站分享的资源来源于用户上传或网络分享,如有侵权请联系站长。
2,本站软件分享目的仅供大家学习和交流,请不要用于商业用途,下载后请于24小时后删除。
3,如果你也有好的建站资源,可以投稿到本站。
4,本站提供的所有资源不包含技术服务请大家谅解!
5,如有链接无法下载,请联系站长!
6,特别声明:仅供参考学习,不提供技术支持,建议购买正版!如果发布资源侵犯了您的利益请留言告知!
创网站长资源网 » WordPress Cookies和PHP会话——你需要知道的一切