2013-03-27 118 views
0

早上,HTML DB中的特殊字符和輸入中的回顯

我創建了一個小表來存儲一些信息到數據庫。

我在我的服務器上關閉了magic_quotes_gpc。

如果我輸入一個"或一個£登錄框中存儲到數據庫沒有擔心。

當我用php回顯它時,它會顯示,但是如果我使用輸入表單域中的值"關閉值域。

<input type="text" name="variable" value="<?php echo $row[variable]; ?>" /> 

我現在已經在輸入值周圍使用了htmlspecialchars,它工作。

<input type="text" name="variable" value="<?php echo htmlspecialchars($row[variable]); ?>" /> 

但我已經看了開放車源作爲參考,他們不以不同的方式使用用htmlspecialchars但存儲數據。

我嘗試使用urlencodes方法他們已經使用:

urlencode(html_entity_decode($_POST[variable],ENT_QUOTES, 'UTF-8')); 

但這似乎存儲爲很多其沒有顯示正確回數字和+標誌。

我寧願編碼更新數據庫,而不是使用我用htmlspecialschars的方法。

但是不太確定哪種方式最好?

謝謝

+4

「我寧願編碼,而不是使用我與htmlspecialschars方法更新數據庫。」 - 不要那樣。在將數據插入HTML之前立即將數據編碼爲HTML是明智的方法。它直到最後一分鐘都以乾淨的格式保存數據,所以如果你需要把它放在不是HTML的地方,它仍然可以。 – Quentin 2013-03-27 09:32:14

+2

[偉大的逃避現實(或:你需要知道如何處理文本中的文本)](http://kunststube.net/escapism/) – deceze 2013-03-27 09:33:30

回答

-2

對於存儲HTML字符更改章程,然後儲存它們:

<?php 
     $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); 
     echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt; 
?> 

找回正確的HTML字符做解碼爲:

<?php 
     $str = "<p>this -&gt; &quot;</p>\n"; 

     echo htmlspecialchars_decode($str); 

     // note that here the quotes aren't converted 
     echo htmlspecialchars_decode($str, ENT_NOQUOTES); 
?> 

對於更多信息請參考http://www.php.net/manual/en/function.htmlspecialchars.php

0

也許嘗試mysqli_real_escape_string($dblink, $string)代替htmlspecialchars

0

您可以使用

htmlentities() function in php