入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

特殊字符与转义

创建时间:2016-06-26 投稿人: 浏览次数:1566

       页面的文本框经常会遇到一些输入特殊字符的问题,这些特殊字符很可能造成页面跳转失败,sql注入,数据读出失败等问题。

     

      (1) 页面跳转的实现方式经常写这样的代码:


         window.location.href = "/DetailJudementByClass/Index?QuestionID=" + questionID + "&state="+state;


         当questionID和state出现&符号时,就会出现错误。


       (2)sql注入最经典的例子是‘1=1’的问题,当文本框中输入类似的符号便会出现问题了。


       (3)数据库设计经常会经常使用#符号作为分隔符进行拼接数据,当存入数据库的数据存放入#时就造成数据混乱。


         解决方法(1):

    function noNumbers(e) {

        var pattern = new RegExp("[`~!@@#%$"^&*()=|{}":;",\[\].<>/?~!@@#¥……&*()——|{}【】‘;:”“"。,、?]")
        var rs = "";
        for (var i = 0; i < e.length; i++) {
            rs = rs + e.substr(i, 1).replace(pattern, "\" + e.substr(i, 1));
        }
            $.get("/test/testAction", {"test":e,"a":e,"b":e}, function (data) {
                alert(data);
            });
        return rs;
     }


      解决思路,将特殊符号加上‘’,转换成普通字符。


      解决方法(2):

    function TextValidate() {
        var code;
        var character;
        var err_msg = "文件夹名称不能包含下列字符之一:
 \ / : * ? " < > | & , ";
        if (document.all) {
            code = window.event.keyCode;
        }
        else {
            code = arguments.callee.caller.arguments[0].which;
        }
        var character = String.fromCharCode(code);
        var txt = new RegExp("[\*,\&,\\,\/,\?,\|,\:,\<,\!,\(,\),\{,\},\#,\$,\%,\_.\-,\=,\^,\>,"]");
        if (txt.test(character)) {
        
            if (document.all) {
                document.getElementById("userName").textContent = document.getElementById("userName").textContent + "\" + character;
                window.event.returnValue = false;
            }
            else {
                document.getElementById("userName").textContent =document.getElementById("userName").textContent+ "\" + character;
                arguments.callee.caller.arguments[0].preventDefault();
            }
        }
    }


      为了将特殊符号传入后台,可以使用ajax或post定义data的方式进行传递,也可以防止部分特殊字符无法传递的问题。


       




声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。