通过jQuery ajax post请求传输PHP代码时遇到了字符串引用问题。当jQuery的ajax方法的processData
未设置或设置为true时,根据jQuery手册传递的代码:
将被处理并转换为适合的查询字符串 默认内容类型" application / x-www-form-urlencoded"
这让我认为我应该urldecode()
PHP中的输入,但这不正确,因为那是关于将百分比编码的字符串转换回实际字符,而不是引用。
我尝试使用stripslashes()
和stripcslashes()
两者似乎都有效,但由于它们不相同,这让我有点不确定哪种方法是正确的,可靠地给我带来100%按位相同的输入?
作为一种解决方法,我在提交之前考虑使用Javascript编写代码,但这会增加可能不必要的开销。
那么:jQuery' s processData
的正确PHP副本是什么?
修改 为了澄清发生了什么,这里有一个例子:
代码输入:
/** Textfield has the following contents:
* <?php
* echo 'Hello world!';
*/
var code = $("textarea").val();
$.ajax({
url: "gateway.php",
type: "POST",
data: {code : code}
});
在PHP后端:
var_dump($_POST['code']);
/** Output is:
* <?php
* echo \'Hello world\';
*/
答案 0 :(得分:1)
看起来你有magic_quotes_gpc,它驱动php自动逃避GET,POST和COOKIES(尤其是引号)的某些字符。转义是在Javascript中完成的。
看一下php-manual: http://php.net/manual/de/security.magicquotes.disabling.php
您可以在服务器基础上禁用该功能,也可以在脚本中手动禁用该功能,但这有点难看。如果您无权访问ini文件,最好的解决方案是更改您的 php.ini 或在您的托管服务提供商面板中搜索此类选项。
希望我能提供帮助