前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >解决JS操作Cookies出现的乱码问题,修复WordPress评论乱码

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

作者头像
张戈
发布于 2018-03-23 07:06:55
发布于 2018-03-23 07:06:55
2.7K00
代码可运行
举报
文章被收录于专栏:张戈的专栏张戈的专栏
运行总次数:0
代码可运行

为了解决博客纯静态之后无法记住用户信息的问题,我将这个功能改成 JS 操作 Cookie 的方式,将用户信息直接保存到用户本地 cookies 当中,从而脱离 php 不再受缓存的影响。不过,近来偶尔发现有个别评论乱码了,如下所示:

看了下乱码的组成,发现已被被转成 URL 编码格式。本以为是我上次自己写的 js 不够完善的原因,于是我从 ZBLOG 中移植了记住评论信息的 JS 代码。

更改后,观察了几天,发现还是偶尔会有这种 URL 转码现象,于是决心解决一下这个问题。

考虑了半天,发现问题其实很好解决,只要在保存 cookies 的时候先进行 url 转码,然后再取出的时候在进行 url 解码就行了!有了思路,问题很快就得到了解决!

在 js 中使用 encodeURIComponent 和 decodeURIComponent,前者是将内容进行 url 编码,后者则是将 url 解码。

于是,将记住评论信息的 JS 稍作修改即可搞定(JS 原代码来自 ZBLOG-ASP):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//设置Cookie
function SetCookie(sName, sValue,iExpireDays) {
	if (iExpireDays){
		var dExpire = new Date();
		dExpire.setTime(dExpire.getTime()+parseInt(iExpireDays*24*60*60*1000));
		document.cookie = sName + "=" + escape(sValue) + "; expires=" + dExpire.toGMTString()+ "; path=/;domain=.zhangge.net";
	}
	else{
		document.cookie = sName + "=" + escape(sValue)+ "; path=/;domain=.zhangge.net";
	}
}
// 目的:    返回Cookie
function GetCookie(sName) {
	var arr = document.cookie.match(new RegExp("(^| )"+sName+"=([^;]*)(;|$)"));
	if(arr !=null){return unescape(arr[2])};
	return null;
 
}
//加载用户信息
function LoadRememberInfo() {
	var strName=GetCookie("author");
	var strEmail=GetCookie("email");
	var strHomePage=GetCookie("url");
	var bolRemember=GetCookie("chkRemember");
    var a_vlaue= document.getElementById("author");
    if (a_vlaue != null){
	    if(bolRemember=="true"){
                    //通过decodeURIComponent对内容解码
		    if(strName){document.getElementById("author").value=decodeURIComponent(strName);};
		    if(strEmail){document.getElementById("email").value=strEmail;};
                     //通过decodeURIComponent对内容解码
		    if(strHomePage){document.getElementById("url").value=decodeURIComponent(strHomePage);};
		    if(bolRemember){document.getElementById("saveme").checked=bolRemember;};
	    }
 
	    if(GetCookie("username")){
		    document.getElementById("author").value=unescape(GetCookie("username"));
	    }
    }	
}
//通过jQuery ready在页面加载时自动从cookies中载入已保存的用户信息
jQuery(document).ready(function($){
       LoadRememberInfo();
//给评论提交按钮绑定信息保存函数
    $("#respond #submit").click(function(){
       SaveRememberInfo();
    });
//给评论重置按钮绑定信息移除函数
    $("#respond #reset").click(function(){
        RemoveRememberInfo();
    });
});
//保存信息函数
function SaveRememberInfo() {
	var strName=document.getElementById("author").value;
	var strEmail=document.getElementById("email").value;
	var strHomePage=document.getElementById("url").value;
	var bolRemember=document.getElementById("saveme").checked;
        //通过encodeURIComponent对内容进行url编码
	SetCookie("author",encodeURIComponent(strName),365);
	SetCookie("email",strEmail,365);
        //通过encodeURIComponent对内容进行url编码
	SetCookie("url",encodeURIComponent(strHomePage),365);
	SetCookie("chkRemember",bolRemember,365);
 
}
//移除信息函数
function RemoveRememberInfo() {
	SetCookie("author",'',365);
	SetCookie("email",'',365);
	SetCookie("url",'',365);
	SetCookie("chkRemember",'false',365);
}

这样改进之后,浏览器将会以 url 编码来保存用户信息,待读取的时候再进行 url 解码,从而解决偶尔产生的乱码问题:

本文仅分享解决 cookies 乱码的思路,如何部署该功能请查看张戈博客之前的文章:https://cloud.tencent.com/developer/article/1071383

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014年11月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WordPress记住评论用户信息的js版本,直接操作cookie无视缓存
这两天一直在折腾博客的评论功能,原因是开启了百度云加速的 html 缓存,导致原有的记住评论者信息的功能失效了,每次刷新文章页面,用户信息都会清空。 于是就折腾了前几天的《博客文章重新启用评论,附一键填写评论中用户信息代码生成工具》一文,弄得好像是那么一回事。但是,还是没有从根本上解决问题啊! 昨天,接到博友黄启福的建议:通过 js 来操作 cookies,让浏览器记住用户信息即可。看了下 W3chool 资料,感觉是可行的,于是上午开始折腾 js 代码,并成功搞定了这个功能!再次感谢黄启福朋友的建议! 下
张戈
2018/03/23
1.7K0
博客文章重新启用评论,附一键填写评论中用户信息代码生成工具
博客关闭评论近一个月的时间,总体的感觉很是安逸,不过看了留言板的反馈,感觉关闭评论对一些真正需要帮助的朋友还是带来了些许不方便,思前考后,决定再次开放评论。 但是在百度云加速中,我依然开启了 html
张戈
2018/03/23
9870
JavaScript客户端存储
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
奋飛
2019/08/15
1.7K0
前端 js 操作 Cookie 详细介绍与案例
通过使用Cookie,服务器可以在不同的HTTP请求之间保持会话状态、记录用户首选项、实现购物车功能、进行用户跟踪等。然而,Cookie也有一些限制,包括存储容量的限制、跨域访问的限制以及安全性方面的考虑。
有勇气的牛排
2023/06/25
6690
原创插件:WordPress博客友好对话框+文章随机推荐滚动条插件(附代码版)
双 11 光棍节,我在博客发布了一篇给博客部署一个友好对话框的教程,用了几天感觉非常不错!就进一步折腾了一下,目前这个 js 已实现以下多种功能: 一、功能描述 ①、能够取得访客的搜索来路和搜索关键词
张戈
2018/03/23
3.8K0
原创插件:WordPress博客友好对话框+文章随机推荐滚动条插件(附代码版)
改typecho存评论用户信息为javascript模式
有同学评论说会缓存评论人的信息 当然,我没注意到这个是因为我们的Chakhsu同学在老高的技术博客也提到这个问题 而我用的模板也是来自于Chakhsu的,所以他在模板里面已经修改过这个问题,直接不读取cookies来回填用户信息 我就小小的修改了一下,采用js来读取并回填,登录状态还无所谓,没登陆的用户确实造成了小小的不便(当然,对我这种常年只有我一个人访问的博客没什么影响……)
李维亮
2021/07/09
4310
WordPress评论统计图
[wymusic title=”你知道我的迷惘 – Beyond”]347687[/wymusic]
楚客追梦
2022/11/11
6800
WordPress评论统计图
【Web技术】238-全面了解Cookie
浏览器和服务器之间的通信少不了HTTP协议,但是因为HTTP协议是无状态的,所以服务器并不知道上一次浏览器做了什么样的操作,这样严重阻碍了交互式Web应用程序的实现。
pingan8787
2019/07/25
5930
启用WP Super Cache纯代码版本之后的一些优化措施
张戈博客在上个月 28 号启用了 WP Super Cache 代码版,几天下来,虽然小问题不断,但是总体感觉非常不错!不管是前台还是后台,速度都有质的提升,着实值得会折腾的人使用。 感兴趣的可以先看下 28 号的具体教程:《WP Super Cache 静态缓存插件纯代码版(兼容多域名网站)》. 下面,简单的说一下启用此功能后遇到的一些问题的解决办法或细项优化。 ①、发表评论时并未删除缓存,导致无法显示最新评论; ②、若主题有登陆状态显示,那缓存之后,无论谁打开都显示已登录; ③、WordPress
张戈
2018/03/23
1.3K0
启用WP Super Cache纯代码版本之后的一些优化措施
JavaScript中的document.cookie的使用
我们已经知道,在 document 对象中有一个 cookie 属性。但是 Cookie 又是什么?“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对 Cookies 的很全面的访问权利。
全栈程序员站长
2022/09/18
1K0
网站集成打字震动特效JS代码改进版
这又是一个拖欠了很久的分享,很早就有朋友留言问评论打字炫彩、震动特效怎么实现的。这功能其实网上早就有人分享 N 遍了,有点搜索技巧和 DIY 能力的站长同学也早就实现了。这里还是继续分享一下我这边的一
张戈
2018/03/26
2.9K0
网站集成打字震动特效JS代码改进版
一篇文章带你了解JavaScript cookies
当Web服务器向浏览器发送网页时,连接被关闭,服务器会忘记用户的一切。Cookie是为了解决“如何记住用户信息”而发明的。
前端进阶者
2021/03/19
7500
一篇文章带你了解JavaScript cookies
JavaScript中常用的方法汇总
2. 服务端验证场景:表单验证需要服务端配合,只执行一段连续的输入事件的最后一次;
越陌度阡
2020/11/26
6560
Jquery基础(六) js方法清空cookie的各种方法
1,要清空浏览器的所有cookies, 2,要清空某网站的cookies,  //csdn.net的所有cookies
Java架构师必看
2021/05/31
8.2K0
本地存储之cookie
源码可以到GitHub上下载! JS操作cookies方法 :   1.cookie若不设置过期时间关闭浏览器后会自动清除数据   2.存储限制4k   3.同地址下其他文件也能读取到     cookie用字符串拼接即可     cookie后可接 ; path=path       ; domain=domain       ; secure 1 /** 2 * [setCookie 设置cookie] 3 * @param {[String]
ProsperLee
2018/10/24
1.5K0
解决ASP.NET中的各种乱码问题
经常发现有人被乱码困扰着,而我感觉比较幸运,很少为此烦恼过。 在这篇博客中,我将把我想到的一些与乱码有关的经验总结出来,供大家参考。 页面显示乱码问题 在一个网站中,有些页面会正常显示,然而,有些
小端
2018/04/16
2.9K0
解决ASP.NET中的各种乱码问题
CTF论剑场 Web14-21 WriteUp
根据hint信息可以猜测为 /.git/敏感文件泄露,该目录下包含了所有 git 正常工作所需要的信息。 使用 GitHack工具(项目地址:https://github.com/lijiejie/GitHack)进行探测:
安恒网络空间安全讲武堂
2019/09/29
2K0
CTF论剑场 Web14-21 WriteUp
ECharts实现WordPress评论统计图
之前使用Google Charts在本站创建过想着统计图(方法见以下文章),不知是什么原因最近发现各种统计图都不显示,以为是不小心动了某个代码,于是重新修改了一次,问题依旧。想着可能是代码冲突或者GG被qiang的原因。本着有问题必须解决的态度,想到了EChart。
楚客追梦
2024/08/24
930
ECharts实现WordPress评论统计图
前端存储技术
后端常用数据库做数据存储,譬如MySql、MongoDB,缓存技术存储数据,如Redis、Memcached;
Jack Chen
2019/02/25
1.9K0
前端存储技术
使用ChatGPT关于登录产品代码的代码评审
前端代码包括login.jsp文件提取的HTML代码和index.js,由于index.css没有改动,不做评审。
顾翔
2024/12/19
1220
使用ChatGPT关于登录产品代码的代码评审
相关推荐
WordPress记住评论用户信息的js版本,直接操作cookie无视缓存
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验