2011-04-15 29 views
1

我是「Zend Framework」中的新成員。所以我遇到了一些問題。將模型中的文本插入到Zend Framework上的數據庫中的問題

其中第一個插入文本到數據庫中。例如我插入這樣的東西「正在發生什麼」並在視圖中出現「現在發生了什麼」和符號「\」「」出現在那裏。

其次,將文本提交給像這樣的控制器(使用html編碼的符號)「什麼   發生」,只有「whats」到達控制器。

請幫我解決這些問題嗎?

回答

-2

我從來沒有使用ZF,但我可以告訴你哪些功能,您需要研究與消毒輸入/輸出

在插入數據庫

在瀏覽器顯示

+0

非常感謝你 – Mirodil 2011-04-15 14:41:02

+0

爲什麼這會被投票? mysql_real_escape_string()和addslashes()之間的唯一區別是用於GBK和Big-5字符集。否則,你將得到相同的結果(就SQL注入等而言),用於UTF-8的ESP。但mysql_real_escape_string()需要數據庫的完整RT來增加大量不必要的延遲。 – FoneyOp 2011-04-15 15:02:47

+1

如果您使用ZF,請不要使用這裏提到的功能!如果您正確使用它,ZF及其Db類將自動爲您執行此操作。這就是數據庫包裝器的意圖。 – 2011-04-15 15:03:17

0

有一個叫魔術引號一個老PHP的功能,使PHP將自動跳脫任何職位/獲取數據以便「插入到」中很容易數據庫。見http://php.net/manual/en/security.magicquotes.php。這很可能就是將這些引號添加到您的內容中。此功能已被棄用,所以我建議在您的php.ini文件(或htaccess)中禁用它,它應該可以解決您的問題。假設你正在使用mod_php,並且只需添加這.htaccess文件:

php_flag magic_quotes_gpc Off 

ZF自動逃脫插入內容(假設您正確使用Zend_Db的),所以你所遇到的問題是因爲數據是被兩次逃脫。

您能否提供更多關於第二個問題的信息,例如:您如何提交文本以及如何在控制器中使用它?

+0

如何禁用htaccess中的棄用功能? – Mirodil 2011-04-15 14:40:23

+0

關於我的第二個問題,文本正文中有html編碼符號(如 ,&#163 ...)。當我向控制器提交文本時,只有一部分內容(直到第一次出現「£」)纔會採取行動。例如「請幫我£我解決£這個問題?」 - >「請幫助」。 – Mirodil 2011-04-15 14:48:53

+0

我已經添加了一個如何在htaccess中禁用魔術引號的例子。因此,對於第二個問題,您在表單中包含這些內容,並將其發佈到另一個頁面?如果你在該頁面上有'var_dump($ _ POST);',你會看到完整的字符串嗎? – 2011-04-15 14:56:08