php htmlentities函数讲解及使用实例

时间:2016-06-27
php htmlentities用于接受一个字符串并将该字符串转换为对应的HTML实体,本文章通过实例向大家讲解php htmlentities函数的使用方法和需要注意的地方,需要的朋友可以参考一下。

比如我们对字符串"<script>"使用htmlentities函数,字符串"<script>"将被转化为"&lt;script&gt;",将"<"和“>”转换为HTML实体,可以防止浏览器将它们作为HTML元素的一部分被解释或运行(经常使用在用户提交表单数据的时候)。

可能上面解释起来比较难得理解,但是如果你能理解浏览器在不同阶段的工作原理,那么就非常简单了。下面让我们来看一下htmlentities在三个不同阶段(php阶段、原始HTML格式阶段和WEB浏览器阶段)字符串是如何改变的。

// An imaginary article submission from a bad user
//  it will redirect anyone to example.com if the code is run in a browser
$userInput = "I am going to hax0r your site, hahaha!
	<script type='text/javascript'>
	window.location = 'http://www.example.com/'
	</script>'";
	
//Lets make it safer before we use it
$userInputEntities = htmlentities($userInput);

//Now we can display it
echo $userInputEntities;

上述脚本的HTML输出如下所示

安全原始的HTML代码:(如果你查看HTML源码)

I am going to hax0r your site, hahaha!
	&lt;script type='text/javascript'&gt;
	window.location = 'http://www.example.com/'
	&lt;/script&gt;'

如果我们没有使用htmlentities函数将HTML代码转换成安全的实体,那么原始的HTML代码将运行并跳转到http://www.example.com/页面

在什么时候需要使用htmlentities

任何时候,你允许用户提交内容到你的网站,其他游客可以看到,你应该考虑取消让他们使用HTML的能力。虽然这将消除很多很酷的事情,你的用户可以做的,喜欢做大量定制的内容,它会阻止你的网站从大量的普通攻击。随着一些自定义编码你可以从运行删除特定的标签,但这超出了本课的范围。

请记住,这允许用户提交内容到您的网站时,您也给他们访问你的网站。请确保您采取适当的预防措施。