页面的文本框经常会遇到一些输入特殊字符的问题,这些特殊字符很可能造成页面跳转失败,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 = "文件夹名称不能包含下列字符之一:\n \\ / : * ? \" < > | & , ";
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();
}
}
}