这是请求
的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 Server版本相对应的手册,以获取合适的语法,以便使用" s并制作一些示例",3,77,'2015-05-08',','2015-05-08 09:51:17')'在第2行
因为我在字符串中有单个引用。因此,如何在通过获取请求时跳过特殊角色。
在jQuery中,您可以用 -
assignWork=assignWork.trim().replace(/[^a-z0-9]+/gi, '-');
,也可以将其替换为Whitespace,或者您的程序最适合您的程序:)
如果要排除特殊字符
解决方案已经在stackoverflow中JavaScript Regexp删除所有特殊字符
var outString = sourceString.replace(/[`~!@#$%^&*()_|+-=?;:'",.<>{}[]\/]/gi, '');
更改以下内容:
assignWork = $jq(".workDescription").val(),
:
assignWork = escape($jq(".workDescription").val()),
IMHO不可能安全地存储数据库中的te te te,当您在JavaScript中读取它时,您只需" unescape"。
javascript unescape()函数
否则,如果您愿意,只需在PHP中使用:
对其进行解码:$assignWork = urldecode($assignWork);
php