网站建设

解决JS操作Cookies出现的乱码问题,修复Wordpress评论乱码

为了解决博客纯静态之后无法记住用户信息的问题,我将这个功能改成JS操作Cookie的方式,将用户信息直接保存到用户本地cookies当中,从而脱离php不再受缓存的影响。不过,近来偶尔发现有个别评论乱码了,如下所示: 看了下乱码的组成,发现已被被转成URL编码格式。本以为是我上次自己写的js不够完善的原因,于是我从ZBLOG中移植了记住评论信息的JS代码。 更改后,观察了几天,发现还是偶尔会有这种URL转码现象,于是决心解决一下这个问题。 考虑了半天,发现问题其实很好解决,只要在保存cookies的时候先进行url转码,然后再取出的时候在进行url解码就行了!有了思路,问题很快就得到了解决! 在js中使用encodeURIComponent 和 decodeURIComponent,前者是将内容进行url编码,后者则是将url解码。 于是,将记住评论信息的JS稍作修改即可搞定(JS原代码来自ZBLOG-ASP): 这样改进之后,浏览器将会以url编码来保存用户信息,待读取的时候再进行url解码,从而解决偶尔产生的乱码问题: 本文仅分享解决cookies乱码的思路,如何部署该功能请查看张戈博客之前的文章:https://zhang.ge/4538.html
阅读全文
网站建设

WordPress记住评论用户信息的js版本,直接操作cookie无视缓存

这两天一直在折腾博客的评论功能,原因是开启了百度云加速的html缓存,导致原有的记住评论者信息的功能失效了,每次刷新文章页面,用户信息都会清空。 于是就折腾了前几天的《博客文章重新启用评论,附一键填写评论中用户信息代码生成工具》一文,弄得好像是那么一回事。但是,还是没有从根本上解决问题啊! 昨天,接到博友黄启福的建议:通过js来操作cookies,让浏览器记住用户信息即可。看了下W3chool资料,感觉是可行的,于是上午开始折腾js代码,并成功搞定了这个功能!再次感谢黄启福朋友的建议! 下面分享这个js代码,补充WordPress在缓存处理方面的不足: 先前置说明一下,此js主要用于解决WordPress在百度云加速等CDN缓存开启下无法保存用户信息的问题,省的某些人不仔细看内容就别说啥“WordPress是可以记住个人信息的笑话”! 一、ZBlog移植 ①、添加JS代码 之前发现ZBlog的记住用户信息是用js实现的,就从中扒了出来,修改了下,以兼容WordPress。代码如下,将以下代码加入到WordPress的 js 当中即可,比如加入到 comments-ajax.js的最后: Ps:如果没有做ajax评论,就没有comments-ajax.js,这时你可以将以上代码保存为 saveinfo.js ,然后引入到前台即可。 ②、修改comments.php 编辑主题的comments.php文件,找到提交留言的按钮代码,在合适的位置添加勾选框: 最后的代码大致如下(供参考): 现在,博客可以放心的开启前台整站CDN加速了,用户只要认真提交过一次评论,那么下次再来访问任意页面,将会自动填写评论用户信息。 下面隐藏内容是张戈之前自己写的js代码,使用感觉没有ZBlog的完善感兴趣的可以参考看看   二、自动保存 不提供是否保存信息的选项,提交评论的时候,会自动保存用户信息到本地cookies当中,下次再访问这个页面的时候,将自动填写用户信息,整个过程用户无需干涉。 Ps:无勾选版本,主要是方便一些不太会改代码的站长,只要在页面引入这个js就行了,无需过多修改。 ①、将如下代码保存为saveinfo.js,并上传到主题目录。 ②、然后,在主题head部分载入这个js即可: 三、自行选择 功能区别:在上述功能的基础上,新增一个勾选框,让用户选择是否保存信息。 设计初衷:因为用户可能用的是他人电脑,并不想让邮箱、网址等信息保留在该电脑上。所以,这是注重用户体验的一个版本,推荐使用! ①、同样的,将如下代码保存为saveinfo.js,并上传到主题目录: ②、然后,在主题head部分载入这个js: ③、修改comments.php 编辑主题的comments.php文件,找到提交留言的按钮代码,在合适的位置添加勾选框: 最后的代码大致如下(供参考): 把网站的所有缓存和CDN缓存都清空后,访问留言板可以看到多了一个勾选框: 现在,博客可以放心的开启前台整站CDN加速了,用户只要认真提交过一次评论,那么下次再来访问任意页面,将会自动填写评论用户信息。 四、注意事项 ①、使用前请务必正确修改js代码中的domian值,否则无法操作cookies; ②、如果你了解js,可以将js代码与网站的其他js合并,减少页面的js请求,比如与comments-ajax.js合并; ③、已记住的网站,如需修改更新用户信息,只需输入新的信息,重新提交一次即可刷新cookie; ④、如果评论框中存在重置(id为reset)的按钮,那么只要点击重置就能清除已保存的用户信息; ⑤、该功能只在用户电脑本地生效,不会带来任何安全隐私及隐患; ⑥、以上js只对WordPress生效,其他建站程序可以通过修改代码中的ID名称即可生效。 非WordPress建站程序的朋友,如果有需求可以留言,张戈可提供无偿修改服务!完毕!
阅读全文