通过获得请求时跳过特殊角色



这是请求

的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中,您可以用 -

替换所有非alphanumeric字符
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

中的JavaScript的" Unescape"

最新更新