2014-10-28 42 views
0

我使用html entities來保護我的網站。
而我的客戶想要使用CMS在他的文章中添加鏈接。
如何在html實體中生成異常?
在html實體中使用href

我的代碼示例:

<p><?php echo h($row['message']) ?></p> 
//h is my function for htmlentities 

我的代碼顯示如下消息:

"You can click this link <a href="###">Link</a>" 
//And I dont know my data insert '\' 
//It become <a href=\"###\">Link</a> 

如果我的問題是不明確的,請詢問。
真的很感謝。

回答

0

我相信你想要做的就是用htmlentities()傳入數據庫,這樣就不會混淆你的數據庫。要檢索它們,你可以使用html_entity_decode()。 html_entity_decode()將所有帶有HTML實體的字符串轉換回原來的字符串。

http://php.net/manual/en/function.html-entity-decode.php

希望這回答了你的問題。

編輯:檢索 原始數據:http://www.example.com

通過ヶ輛它吐出來的HTML實體,其試圖找到該網頁時,瀏覽器無法解釋。使用htmlentities()(如果我錯了,請糾正我)在將用戶輸入傳遞到其他任何地方之前進行編碼。

用戶輸入:<script>hacks</script>

傳遞雖然ヶ輛:

&ltscript&gthacks&lt (whatever backslash is)script&gt 

(這樣,它不能亂用您的數據庫中任何東西,更好的例子是使用PHP/MySQL的,但我目前還不能精確地給出這個確切的例子。)

但是,這將揭露你的網站解碼時,以及其他預防措施將不得不採取。

+0

我也不該數據使用ヶ輛傳遞到數據庫中。數據庫數據仍然是原始的。從數據庫中檢索數據時使用htmlentities。是否有可能對特徵進行例外處理? – Scramble 2014-10-28 02:31:46

+0

我不認爲你需要從數據庫中檢索數據,因爲這些數據已經很安全了。您希望使用htmlentities的原因是爲了確保用戶輸入不包含惡意代碼,例如混淆。 URL需要字符,並且(我相信)不能使用URL中的HTML實體。 – 2014-10-28 02:37:09

+0

這是我的公司規則,所以我不能做太多的事情。但是我仍然遇到了「當我插入到數據庫中時它自動出現在前面」的問題。示例Link如何刪除它? – Scramble 2014-10-28 02:40:47

0

試試這個:

<?php 
    $link = h(stripslashes($row['message'])); 
?> 


You can click this link <a href='<?php echo $link; ?>'>Link</a>