您对覆盖PHP内置setcookie()函数以控制WP是否创建Cookie有何想法

时间:2015-11-11 作者:SimonT

这是一篇很长的帖子:

这是关于英国、UE和意大利的饼干法。

尽管

My sites are hosting in the USA

I reside in the USA

My sites are not commercial sites

None of my sites, that is my code, currently uses cookies

Most WP cookies would probably be allowed by the cookie laws as exceptions.
我仍然希望尽可能地遵守UE、英国和意大利的饼干法。

我相信将来会有一些美国曲奇法(可能和其他曲奇法一样糟糕),我希望至少有一个领先的开始。

如果写得好的话,作为一名网站访问者,我会欢迎这样一项法律,作为至少了解第三方cookie何时被使用的手段,并有选择退出的选项。

因此,我想让我的网站(包括博客)的访问者能够选择退出Cookie,包括WP Cookie。

WP cookie确实提供了一些好处,但我一直在“玩”它们,没有遇到删除所有WP cookie会真正影响性能或功能的情况。

我只谈论非会话cookie,因为我相信它们不受法律管辖,除非它们是第三方cookie,而且它们几乎都不是会话cookie。我对法律的看法可能是错误的——有人能肯定吗?

如果你想记住“选择退出”,你当然会创建一个cookie来告诉你不要创建cookie——如果你仔细想想,这很奇怪,但是没有其他直接的方法来记住选择退出,也没有其他方法在访问者每次加载或重新加载页面时询问他们。

您还可以创建一个cookie,或者使用具有不同值的同一个cookie,告诉您访客已经接受了cookie的使用,因此您无需再次询问他们。

我认为这两种cookie(选择退出和未选择退出cookie)的有效期都应该设置为3个月,甚至更短。这将允许您重新询问访客,以确保他们的愿望没有改变。

我还认为需要有一个易于找到的链接,访问者可以请求更改他们的cookie决策。这将使他们取消选择退出或选择退出的权利。我会把这个链接放在WP侧栏中。

至于WP cookie,有“记住我的cookie:但是考虑到大多数(如果不是所有的话)当前浏览器都可以保存用户ID和密码,并根据需要自动填充字段,拥有一个不记得你的网站不会给访问者带来太多额外的工作。

访问者访问该站点,要求他们登录,浏览器已经填写了用户id和密码字段,访问者只需按enter键或单击某个按钮。

对我来说,这使得使用“WP记住cookie”成为一个没有实际意义的话题。

查看WP使用的WP代码,您当然会发现使用PHP setcookie函数来创建Cookie,WP在几行代码中都是这样做的。我不知道如何在核心文件中维护一系列更改。

有一种重写PHP函数的方法,我可以用它来代替setcookie函数的处理。我的函数将检查是否存在退出cookie,如果存在,则忽略创建cookie的请求(如果是非会话cookie)。如果有一个opt-in cookie,我将调用重命名的原始函数来创建cookie。

WP检查和使用其cookie不需要额外的处理,用户选择退出,已经有处理“未找到cookie”情况的代码。

您对如何处理访客的选择退出决定有何想法?

它不需要更改代码,如果访问者不选择退出,它仍然支持cookie。

哦,当页面加载时,如果没有选择退出或选择加入cookie,我会在页面中心显示一个条。为什么要将需要访问者操作的内容放在页面的顶部或底部?把它放在他们看不见的地方,让它成为模态,也就是说,在他们可以继续之前,他们必须关注的事情。提供这样的栏或弹出窗口很简单。

有什么想法吗?

几乎忘记了,如果不将用户的选择加入或选择退出偏好放在数据库甚至平面文件中,如果他们在不同的计算机上或使用不同的浏览器配置文件访问该网站,就会被问及有关cookie的问题。

在不需要名字的情况下,使用这种方法来记住选择加入或退出决定是不现实的,这实际上意味着访问者必须登录才能选择加入或退出。

我认为这不是一个可行的方法,可能会触犯法律。

饼干是记住访客选择加入我们退出决定的最佳方式。

您认为如何?有人知道控制WP是否创建非会话cookie的另一种方法吗?

我认为这是作者应该添加的选项。您可以通过设置页面打开和关闭。

1 个回复
SO网友:SimonT

I\'m answering my own question.

对于如何重写/替换内置PHP函数的问题,答案是有一个rename\\u function()函数,但它是ADP调试扩展的一部分,必须安装在PHP安装中。

我可以在本地安装,但我怀疑我能否说服我的托管公司在他们的服务器上安装它。

因此,目前,处理cookie的唯一方法是编辑核心文件中对setcookie()函数的58个调用。

哦,至于需要cookie,我的测试到目前为止发现,只有登录时才需要cookie。你可以告诉访问者,如果他们成为注册用户并登录网站,他们将不得不接受cookie。

相关推荐

Cookies in template

我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!