2012-06-01 55 views
0

標題有點說這一切。我應該使用nl2br(htmlspecialchars($ text))來回顯/打印到屏幕上的所有內容嗎?

我一直在環顧四周,看起來好像是在處理來自用戶的輸入時,通過轉義它並將其插入到數據庫中來清理它。然後,當從數據庫中檢索,如果我打算吐出到屏幕上,我應該使用htmlspecialchars()將不友好的字符轉換爲它們的安全等價物,並且如果我想將換行符轉換爲斷點,則使用nl2br()。

我應該創建一個名爲,做echo nl2br(htmlspecialchars($text))和使用,無論我可能要輸出的東西,可能都來自於用戶,而不是那麼平常回聲/打印語句safeEch​​o()新的函數?

+0

只有一個西斯交易絕對。 – xbonez

+0

請注意,當您將字符串存儲到數據庫時,應使用mysql_real_escape_string作爲下面所述的vlzvl。不過,當你向用戶回顯實際的字符串時,你應該使用這些字符串。此外,請使用Smarty(http://www.smarty.net/docsv2/en/language.modifier.escape)等模板引擎爲您做到這一點。 – phsource

回答

2

沒有, 安全地保存在數據庫中,你只需要這樣的:(逃單/雙引號&等)

mysql_real_escape_string($thedata); 

從數據庫中讀取數據時,不要做任何事情;許多轉換沒有任何好處。

nl2br只需要「\ n」併產生一個<br \>;當然不需要打印..

+0

您還應該查看mysqli(http://www.php.net/manual/en/mysqli.real-escape-string.php)模塊,該模塊大部分取代了mysql模塊,也是一個功能超集。 – phsource

+0

嗯嘿@vlzvl所以你說我不應該打擾使用htmlspecialchars()時輸出?我想有些人提到你應該或者如果有人插入代碼,它會被瀏覽器渲染? – carlinyuen

+0

它取決於;你正在爲某人輸入他自己的HTML提供方法?那麼你應該使用[strip_tags](http://php.net/manual/en/function.strip-tags.php)有效地去除'em'all並且只允許你自己的。 – 2012-06-02 16:00:02