首页 > 代码库 > 一场由空格引发的错误数据
一场由空格引发的错误数据
背景
有一张单据,某一个字段A异常,开始调错。A的值为 “正常值+”“正常值++” “正常值+++” “正常值++++++”等多了1-N个加号不等
错误数据
原因分析
追踪到数据操作LOG日志,发现添加的时候就是A错误数据。
A的值是直接从cookie中获取的,而cookie是登陆时候方法缓存到浏览器的。
由此判断
1.cookie错误
2.提交数据后台解析参数错误
3.不排除 SP(数据操作验证存储过程) 修改、其他修改等
还原错误
还原了半天也没有发下数据哪里有问题,新添加的还是没有问题。
没有还原案例,没法找错误,只能一步一步的看,有没有可能失误。
看了获取缓存的方法
function getCookie(name)// 取cookies函数 { var arr = document.cookie .match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; }
没发现异常。
请教了主管,主管给我测了一会,发现可能是URL编码有问题。因为空格编码之后会变为“+”号。
测试
然后登陆用户名:‘A‘写为‘A ‘
特意加了一个空格,然后发现缓存果然是‘A+’
老项目,根本就没有做去空格处理。
只有在底层sql验证语句去了空格。
解决方案
找到了设置缓存的地方。
Response.Cookies["usercode"].Value =http://www.mamicode.com/ Server.UrlEncode(muser.userCode); Response.Cookies["cmpCode"].Value =http://www.mamicode.com/ Server.UrlEncode(cmpCode); Response.Cookies["sapCode"].Value =http://www.mamicode.com/ Server.UrlEncode(muser.sapCode); Response.Cookies["companyName"].Value =http://www.mamicode.com/ Server.UrlEncode(muser.CompanyName.Trim()); Response.Cookies["loginUserName"].Value =http://www.mamicode.com/ Server.UrlEncode(muser.userName.Trim()); Response.Cookies["DealerPsn"].Value = http://www.mamicode.com/Server.UrlEncode(muser.DealerPsn.Trim());
跟踪
发现之后,立即加了一个 .Trim()
总结
有时候写代码很随意,去空格总感觉加了没什么用。相信很多人不是处女座,也没有严谨的逻辑,我们能做的只有细心,认真~~~
一场由空格引发的错误数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。