清理数据以在引号和范围内使用在URL内

时间:2013-01-08 10:52:22

标签: php javascript encoding sanitization

如果我想在Javascript中的单引号之间放置一个值,我该如何清理/编码它以使值中的任何引号都不会引起问题?

我还想在查询字符串中使用此值,然后我将传递给PHP。

无论使用什么,我都需要能够使用PHP将其解码为正常值。

示例:

$foo = "Hey, what's up!?"; // PHP

getGrades('<?=$foo?>'); // JS Function

function getGrades(var) {

        // Set file to get results from..
        var loadUrl = "ajax_files/get_grades.php";

        // Set data string
        var dataString = 'grade=' + var;

        // Run the AJAX request
        runAjax(loadUrl, dataString);          

}

function runAjax(loadUrl, dataString) {

    jQuery.ajax({
        type: 'GET',
        url: loadUrl,
        data: dataString,
        dataType: 'html',
        error: ajaxError,
        success: function(response) {
            someFunction(response);
        }
    });    

}

// get_grades.php file

$grade = $_GET['grade']; // We now want this value to be it's normal value of "Hey, what's up!?";

2 个答案:

答案 0 :(得分:1)

如果您使用单引号字符串连接,则不会出现问题。剩下的就是在查询字符串中使用它时。在这种情况下,您应该使用encodeURIComponent

同时将var更改为其他内容。 var是JavaScript中的关键字。

答案 1 :(得分:1)

  

getGrades('<?=$foo?>'); // JS Function

json_encode将使字符串JavaScript安全(并引用它)。

getGrades(<?php echo json_encode($foo); ?>);

  

我还想在查询字符串中使用此值,然后我将传递给PHP。

传递data: 对象,而不是字符串。 jQuery将为您处理转义。

var dataString = { grade: var }; // Rename the variable too