2014-10-28 106 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>