zoukankan      html  css  js  c++  java
  • 一场由空格引发的错误数据

    背景

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

    总结

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

  • 相关阅读:
    prim 堆优化+ kruskal 按秩优化
    poj 2679 Adventurous Driving(SPFA 负环)
    poj 1125 Stockbroker Grapevine (dij优化 0ms)
    codevs 4909 寂寞的堆(写的好丑0.0)
    noi 7221 拯救公主 (状态压缩+bfs)
    codevs2059逃出克隆岛(传送门bfs)
    HUD3336
    poj 3974 Palindrome
    疑难杂症
    正则表达 比较两个浮点数
  • 原文地址:https://www.cnblogs.com/blogs2014/p/7217408.html
Copyright © 2011-2022 走看看