发布转义Javascript数组并在PHP

时间:2016-08-11 01:30:55

标签: javascript php arrays database escaping

我有一些javascript代码可以获取两个html表单输入字段的值。我转义了值以允许用户输入特殊字符,然后将它们放入一个字符串化然后发布的数组中。

$(document).ready(function() {
  $("#submit").click(function() {
    var BuilderName = escape($('[name=BuilderName]').val());
    var OwnersName = escape($('[name=OwnersName]').val());
    var arraydata = [BuilderName, OwnersName];
    $.post("DCF_Update_Query.php", {
      data: JSON.stringify(arraydata)
    }, function() {
         alert('Successful');
       }).fail(function() {
            alert('Failed');
          });
  });
});

在我的PHP文件中,我检索并解码数组并将其插入我的数据库。

$data = json_decode($_POST['data']);

mysqli_query($conn,"INSERT INTO dcf (BuilderName, OwnersName)
VALUES ('$data[0]','$data[1]')");

我的问题是转义字符作为%26%27等进入数据库。如何取消转义这些字符,然后使用{{1}重新转义它们}。另外,我听说mysqli_real_escape_string()会自动转义特殊字符。如果是这种情况,那我甚至需要用json_decode()来逃避它们吗?我非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

尝试通过urldecode函数传递$ data变量的内容:

$data = urldecode(json_decode($_POST['data']));

答案 1 :(得分:0)

你真的,真的,真的需要一个准备好的声明。不需要逃脱

$prep = $conn->prepare("INSERT INTO dcf (BuilderName, OwnersName) VALUES (?, ?)");
$prep->bind_param('ss', $data[0], $data[1]);
$prep->execute();