通过get请求时跳过特殊字符

时间:2015-05-08 04:59:22

标签: javascript php jquery

这是请求

的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请求时跳过特殊字符。

3 个答案:

答案 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);

Javascript's “unescape” in PHP