在phpcms 后台里面<iframe>标签显示是正常的..
但是网页生成后显示 就变成 源码 (<iframe allowfullscreen="" frameborder="1" height="100%" scrolling="no" src="http://www.timsion.com/php-cms/" width="100%"></iframe>) 不能正常显示...
phpcms v9 在添加内容 <iframe> 在网页却直接输出源码
phpcms发布内容时如何保留框架<iframe></iframe>
有些时候,发布文章内容的时候需要用到<iframe></iframe>框架站外内容
在发布内容时就遇到这个问题,<iframe></iframe>给转义了,保存后变成了> iframe,前台显示也是这样,估计是官方为了防止安全,把script、iframe、frame都给转义了,那如何破解这个转义呢?只需要稍微修改一下PHPCMS的文件,即可保留<iframe></iframe>
找到\phpcms\libs\functions\global.func.php文件,phpcms V9大概在89行和156行有iframe,在
iframe转义前面加注释符号即可,即改成:
//$str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '<\\1iframe\\2>', $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');