2011-05-06 81 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已關閉,現在已棄用。