一场由空格引发的错误数据

Posted 淘小人官网

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一场由空格引发的错误数据相关的知识,希望对你有一定的参考价值。

背景

有一张单据,某一个字段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;

}
View Code

没发现异常。

请教了主管,主管给我测了一会,发现可能是URL编码有问题。因为空格编码之后会变为“+”号。

测试

然后登陆用户名:\'A\'写为\'A \'

特意加了一个空格,然后发现缓存果然是‘A+’

老项目,根本就没有做去空格处理。

只有在底层sql验证语句去了空格。

 

解决方案

找到了设置缓存的地方。

Response.Cookies["usercode"].Value = Server.UrlEncode(muser.userCode);
                Response.Cookies["cmpCode"].Value = Server.UrlEncode(cmpCode);
                Response.Cookies["sapCode"].Value = Server.UrlEncode(muser.sapCode);
                Response.Cookies["companyName"].Value = Server.UrlEncode(muser.CompanyName.Trim());
                Response.Cookies["loginUserName"].Value = Server.UrlEncode(muser.userName.Trim());
                Response.Cookies["DealerPsn"].Value = Server.UrlEncode(muser.DealerPsn.Trim());
View Code
跟踪

 

发现之后,立即加了一个 .Trim()

 

 

总结

有时候写代码很随意,去空格总感觉加了没什么用。相信很多人不是处女座,也没有严谨的逻辑,我们能做的只有细心,认真~~~

以上是关于一场由空格引发的错误数据的主要内容,如果未能解决你的问题,请参考以下文章

一场由tcp_timestamps 引发的无解追击案

一场由 React 引发的前后端分离架构的思考与实践 | OSC 济南源创会

一场由星巴克开启的 Web3新场景探索

封号令引发自媒体逃离微信,豌豆荚等借势APP化

为啥代码片段在 matplotlib 2.0.2 上运行良好,但在 matplotlib 2.1.0 上引发错误

片段对话框中的片段膨胀引发错误“片段未创建视图”