2014-09-18 63 views
0

當我張貼的東西到我的數據庫有'或é等我得到這個:PHP - 引號字符

Don't worry guys, 

這應該是:

Don't worry guys 

這是我如何添加文本數據庫:

$text = $_POST['text']; 
      $text = mb_convert_encoding($text, 'UTF-8', 'UTF-8'); 
      $text = htmlentities($text, ENT_QUOTES, 'UTF-8'); 

這裏是我的數據庫表中的一些信息:

Format dynamic 
Character Set (Sorting) utf8_general_ci 
+1

嗯,這就是'htmlentities()'所做的。你在期待什麼? – Ohgodwhy 2014-09-18 18:45:09

+0

所以你的問題到底是什麼? – ReZa 2014-09-18 18:45:31

+2

首先,您似乎將輸入字符串從UTF-8轉換爲冗餘的UTF-8。我不確定這是否是一種處理PHP多字節字符串的駭客解決方法,如果是的話,請忽略我的評論。這個問題是由你的特性調用引起的,它將你的特殊字符轉換成HTML實體。在數據庫中存儲原始的原始UTF-8字符串。只有當你想將它嵌入HTML輸出時,你必須確保將HTML控制字符轉換爲實體,以避免代碼注入。 – tiguchi 2014-09-18 18:47:45

回答

1

雖然這不是一個很好的做法,以避免SQL注入 使用html_entity_decode()解碼的HTML實體來解決這個問題

1

使用htmlspecialchars()而不是htmlentities()讓你在這種情況下想要的結果:

htmlspecialchars($text, ENT_COMPAT | ENT_HTML401, 'UTF-8')