这是请求
的js \ jquery函数function AssignWork(){
var projectId = $jq(".dmProjName").val(),
empId = $jq(".nameEmp").val(),
assignWork = $jq(".workDescription").val(),
workDate = $jq(".workDate").val();
var go_path = "Employee_Switch_Person.php?action=assignWork&vars=4&var1="+empId+"&var2="+projectId+"&var3="+assignWork+"&var4="+workDate;
$jq.get(go_path,{},function(data){
if(data ==1){
alert("Successfully Assigned!");
showAssignWork(0);
}
});
}
这是php
function assignWork($empId,$projectId,$assignWork,$workDate){
//echo $workDate;
global $con;
date_default_timezone_set("Asia/Karachi");
//echo "date format".date('Y-m-d H:i:s');
//echo $empId.",".$projectId.",".$assignWork.",".$workDate;
$sql = "INSERT INTO `tblempassignwork` (`EmpId`, `AssignWork`, `AssignById`, `ProjectId`, `WorkDate`, `AssignDateTime`)
VALUES($empId,'".$assignWork."',".$_COOKIE["userID"].",".$projectId.",'".$workDate."','".date('Y-m-d H:i:s')."')";
$result = mysql_query($sql,$con) or die(mysql_error());
echo $result;
}
问题在于
assignWork = $jq(".workDescription").val()
可以包含带双引号,单引号,哈希或任何特殊字符的字符串。如果我使用单引号或哈希,那么它正在显示
您的SQL语法有错误;查看与 MySQL服务器版本对应的手册,以获得正确的语法,并使用附近的示例',3,77,'2015-05-08','2015-05-08 09:51: 17')'在第2行
因为我在字符串中输入单引号。那么如何在通过get请求时跳过特殊字符。
答案 0 :(得分:0)
在jQuery中,您可以使用-
替换所有非字母数字字符
assignWork=assignWork.trim().replace(/[^a-z0-9]+/gi, '-');
或者你可以用空白替换它,或者用最好的方式替换你的程序:)
答案 1 :(得分:0)
如果要排除特殊字符
解决方案已经在stackoverflow中 javascript regexp remove all special characters
var outString = sourceString.replace(/[`~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi, '');
答案 2 :(得分:0)
改变这个:
assignWork = $jq(".workDescription").val(),
对此:
assignWork = escape($jq(".workDescription").val()),
恕我直言,在您的数据库中存储未加限制的字符串是不安全的,当您在javascript中阅读它时,您可能只是&#34; unescape&#34;它
JavaScript unescape() Function
否则,如果您愿意,只需使用以下代码在PHP中解码:
$assignWork = urldecode($assignWork);