0

即使在magic_quotes_gpc = off服务器上,我通过 jQuery Ajax 发布的数据也会被转义。

直接从$_POST(不使用 ajax)获取数据工作正常,未转义。但是让他们通过ajax会逃脱他们。

$.ajax({
url: 'includes/updateDb.php',
type: 'POST',
data: {
    id:  $this.attr('data-id'),  
    text: $this.html()
}
});

test's->test\'s

这是一个功能还是一个错误?我应该如何进行?在服务器上剥离字符串PHP

4

3 回答 3

0

AJAX 在 jQuery 中默认编码为application/x-www-form-urlencoded,在您的 PHP 中用于utf8_decode获取未转义的数据

来自jQuery 网站

contentTypeString
Default: 'application/x-www-form-urlencoded; charset=UTF-8'
于 2012-08-31T11:59:00.097 回答
0

现在因为您在发送之前已经得到答复,所以jQuery.ajax( url [, settings] )只能默认发送,这意味着它可以更改编码的数据..这有助于在 99% 的情况下防止进一步的问题......他们使用的默认编码是

application/x-www-form-urlencoded; charset=UTF-8

现在可以将其更改为任何类型的内容text/javascript,假设那是您发送的数据类型。但通常我们试图发送给 php 的是字符串或数组。这个数组需要以两种语言都能理解的某种方式进行编码......现在从 5.2.0 版本开始,php 支持 json 编码,这是从 java 发送数据的最佳方式。所以你可以向 php 发送一个 json 编码的数字,看起来像这样

{"foo-bar": 12345}

并使用json_decode()把它变成

$json = '{"foo-bar": 12345}' ; 
$obj = json_decode($json);
print $obj->{'foo-bar'}; // will return 12345

所以正式每个人都只是使用这种格式将数据从 javascript 发送到 php。为了您自己,这里是一个 php 代码的示例,假设您发送用户名和密码之类的内容,数组将如下所示{"id": "234" , "text" : "helloo,/////text////"}

$posted_data = $_POST['id'];
$parsed_data = josn_decode('$posted_data');
echo $parsed_data -> {'text'}; // should print helloo,/////text////
于 2012-09-01T15:40:08.683 回答
0

事实证明,尽管phpinfo()显示magic_quotes_gpc已关闭,但它们确实已打开。这是一项共享托管功能,php.ini仅影响最顶层的文件夹。我没有意识到这一点。

道歉并感谢您的帮助-)

于 2012-12-02T10:55:24.503 回答