在phpcms 后台里面<iframe>标签显示是正常的..

但是网页生成后显示 就变成 源码 (<iframe allowfullscreen="" frameborder="1" height="100%" scrolling="no" src="http://www.huzhuta.com/list/phpcms.html" width="100%"></iframe>) 不能正常显示...


phpcms v9 在添加内容 <iframe> 在网页却直接输出源码


phpcms发布内容时如何保留框架<iframe></iframe>

有些时候,发布文章内容的时候需要用到<iframe></iframe>框架站外内容

最近互助塔(www.huzhuta.com)在发布内容时就遇到这个问题,<iframe></iframe>给转义了,保存后变成了&gt iframe,前台显示也是这样,估计是官方为了防止安全,把script、iframe、frame都给转义了,那如何破解这个转义呢?只需要稍微修改一下PHPCMS的文件,即可保留<iframe></iframe>
找到\phpcms\libs\functions\global.func.php文件,phpcms V9大概在89行和156行有iframe,在
iframe转义前面加注释符号即可,即改成:
//$str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '&lt;\\1iframe\\2&gt;', $str );

下面还有个懒一点的办法,

phpcms v9为什么iframe不识别?

phpcms 有过滤函数的 把iframe这个标签过滤了,当有这个标签的时候就会进行HTML转义,如果你真的需要添加的话可以 把这个过滤删掉或者修改一下,不过需要修改PHP文件的,在/phpcms/libs/functions/global.func.php 这个文件里面 大约89行和156行,你可以打开这个文件然后直接搜索iframe,然后再前面或者后面加个什么字母改变它,例如ssiframe,这样添加文章的时候就不会过滤了。

function remove_xss($string) { 
    $string = preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S', '', $string);
    $parm1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'linkss', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');