[原创]针对Codeigniter的转换html的快捷方法

今天测试某个网站时发现有部分html没有过滤(其实是完全没有过滤到,但可能因网站原先不提供富文本编辑所以才没察觉~~),网站是采用Codeigniter框架构建的,所以这里的方法主要针对这个框架,其他需要适当修改。

首先,是转换html的功能,这里使用php自带的一个函数:htmlspecialchars(还有另一个函数,但那个函数会把中文变成乱码,所以这里先不用。)考虑要支持对数组的转换,所以这里实现是这样的:

function htmlspecial($array){  
      if(is_array($array)){//数组处理
        foreach($array as $key=>$value){
        if(!is_array($value)){
        $array[$key]=htmlspecialchars($value);
           }else{
               $array[$key]=htmlspecial($array[$key]);
           }
}
return $array;
}else{
return $array = htmlspecialchars($array);
}
}

然后是应用到Codeigniter框架中,因为项目中大量使用了get_post方法,又为了“可能有些并不需要转换html”,所以这里拓展了这个方法,提供了一个bool参数用于控制是否经过html转换,具体实现如下:
class MY_Input extends CI_Input
{
/**
* Contructor
*
*/
public function __construct()
{
parent::__construct();
}
/**
* 过滤html
*/
function htmlspecial($array){
if(is_array($array)){//数组处理
foreach($array as $key=>$value){
if(!is_array($value)){
$array[$key]=htmlspecialchars($value);
}else{
$array[$key]=htmlspecial($array[$key]);
}
}
return $array;
}else{
return $array = htmlspecialchars($array);
}
}
/**
* 过滤html
*/
function get_post($index = '', $xss_clean = FALSE,$htmlspecial=true){
if($htmlspecial){
return $this->htmlspecial(parent::get_post($index,$xss_clean));
}else{
return parent::get_post($index,$xss_clean);
}
}
}

至此,在基本不需要改动原有代码的情况下,修复了问题。

 

另外,这里顺便提供一下网上解决ie不支持max-height的方法:

width:expression(this.width > 220 && this.width > this.height ? 220 : auto); height: expression(this.height > 200 ? 200 : auto);

就是使用ie支持的expression,在css中加上以上内容就可以了

» 本文链接地址:https://www.xidige.com/450

打开支付宝扫一扫,即可进行扫码打赏哦

扫码支持
扫码打赏,你说多少就多少

标签:

分享到:

扫一扫 在手机阅读、分享本文

上一篇: 下一篇:
评论区0人评论105人参与

电子邮件地址不会被公开。 必填项已用*标注

*

loading

赞助商广告