【发布时间】:2016-08-11 01:30:54
【问题描述】:
我有一些 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 等形式输入数据库。如何取消转义这些字符,然后使用mysqli_real_escape_string() 重新转义它们。另外,我听说json_decode() 会自动转义特殊字符。如果是这种情况,那么我什至需要用mysqli_real_escape_string() 来逃避它们吗?非常感谢任何帮助,谢谢!
【问题讨论】:
-
如果只是绑定参数就不用担心转义了。你不应该这样做
"INSERT INTO dcf (BuilderName, OwnersName) VALUES ('$data[0]','$data[1]')"。 -
我认为这些值是 url 编码的,所以你应该能够
urldecode($val)将%26转换回来。如果不是 url 编码,那么它将是htmlspecialchars_decode().
标签: javascript php arrays database escaping