帝国cms同时在线 帝国CMS二次开发经常会用的ehtmlspecialchars函数介绍

帝国CMS教程

帝国cms的ehtmlspecialchars函数,二次开发中经常会用到。该函数可以把一些预定义的字符转换为HTML实体,返回转换后的新字符串,原字符串不变。用于防止别人提交html代码进行攻击, 比如我发帖时提交HTML代码, 代码里含有攻击性代码 .. 那么接收时进行htmlspecialchars转换 就可以让代码不生效.

函数在:/e/class/function.php 中,代码如下:

//htmlspecialchars处理function ehtmlspecialchars($val,$flags=ENT_COMPAT){ global $ecms_config; if(PHP_VERSION>='5.4.0') { if($ecms_config['sets']['pagechar']=='utf-8') { $char='UTF-8'; } else { $char='ISO-8859-1'; } $val=htmlspecialchars($val,$flags,$char); } else { $val=htmlspecialchars($val,$flags); } return $val;}

被转换的预定义的字符有:

&:转换为&":转换为"':转换为成为 '<:转换为<>:转换为>

$flags可选参数还有

可用的引号类型:

ENT_COMPAT - 默认。仅编码双引号。

ENT_QUOTES - 编码双引号和单引号。

ENT_NOQUOTES - 不编码任何引号。

无效的编码:

ENT_IGNORE - 忽略无效的编码,而不是让函数返回一个空的字符串。应尽量避免,因为这可能对安全性有影响。

ENT_SUBSTITUTE - 把无效的编码替代成一个指定的带有 Unicode 替代字符 U+FFFD(UTF-8)或者 &#FFFD; 的字符,而不是返回一个空的字符串。

ENT_DISALLOWED - 把指定文档类型中的无效代码点替代成 Unicode 替代字符 U+FFFD(UTF-8)或者 &#FFFD;。

规定使用的文档类型的附加 flags:

ENT_HTML401 - 默认。作为 HTML 4.01 处理代码。

ENT_HTML5 - 作为 HTML 5 处理代码。

ENT_XML1 - 作为 XML 1 处理代码。

ENT_XHTML - 作为 XHTML 处理代码。