2011-05-06 99 views
0

我送通过Ajax的一些消息,使用encodeURIComponent方法,但在服务器端会收到一些不需要的字符在消息中,例如代替阿贾克斯得到消息问题

不能

我越来越

可以\'吨

,这是什么问题

回答

1

试试这个答案的解决方案:从给定

<?php 
// first use encodeURIComponent on javascript to encode the string 
// receive json string and prepare it to json_decode 
$jsonStr = stripslashes ($_POST['action']); 
// decode to php object 
$json = json_decode ($jsonStr); 

// $json is now a php object 
?> 

http://php.net/manual/en/function.urldecode.php

+0

'urldecode'页面有一个'stripslashes'和'json_decode'的例子,但没有'urldecode'?这很酷。 – Rudie 2011-05-06 17:08:34

+0

这确实解决了OP的问题,但它是一种黑客攻击,因为PHP不应该在请求中为值添加斜线。如果您确定关闭了http://www.php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc,因为它已被弃用,您不需要删除已添加的斜杠。 – 2011-05-18 17:56:41

0

有一个机会,你正在使用的框架正在积极试图阻止SQL注入攻击通过默认转义单引号字符。查看您的框架的文档,以获取POST数据的逐字文本。

1

引用不会被encodeURIComponent转义。 namuol是正确的,你的框架试图对你非常聪明,并通过POST和GET应用自己的转义。如果使用PHP,请确保Magic quotes已关闭,现在已弃用。