当前位置:  编程技术>php
本页文章导读:
    ▪php 过滤非法与特殊字符串的方法      提供几段函数,实现非法字符串、特殊字符串的过滤方法。 代码: <?php //简单过滤JS 、PHP标签 function cleanJs($html){ $html=trim($html); $html=str_replace(array('<?','?>'),array('<?','?&g.........
    ▪php 队列(Queue)数据结构的实现代码      什么是队列? 队列(Queue),是一种特殊的先进先出线性表,其只能在前端进行删除操作(一般称为出队),在后端进行插入操作(一般称为入队)。 进行删除操作的端称为队头,进行插入.........
    ▪学习centos安装php的mysql扩展      在centos系统中,安装完apache2+php5之后,接下来就是要安装mysql5了。 由于采用的源码安装mysql5,还需要添加php扩展。 添加扩展的基本步骤: 1、进入php源代码目录:   代码示例: # cd /usr/ChenSh.........

[1]php 过滤非法与特殊字符串的方法
    来源: 互联网  发布时间: 2013-12-24

提供几段函数,实现非法字符串、特殊字符串的过滤方法。

代码:

<?php
//简单过滤JS 、PHP标签  
 function cleanJs($html){  
    $html=trim($html);  
    $html=str_replace(array('<?','?>'),array('<?','?>'),$html);  
    $pattern=array(  
   "'<script[^>]*?>.*?</script>'si",  
   "'<style[^>]*?>.*?</style>'si",  
   "'<frame[^>]*?>'si",  
   "'<iframe[^>]*?>.*?</iframe>'si",  
   "'<link[^>]*?>'si"  
   );  
   $replace=array("","","","","");  
   return   preg_replace($pattern,$replace,$html);  
 }  
 /* Remove JS/CSS/IFRAME/FRAME 过滤JS/CSS/IFRAME/FRAME/XSS等恶意攻击代码(可安全使用) 
  * Return string 
  */  
 function cleanJsCss($html){  
    $html=trim($html);  
    $html=preg_replace('/\0+/', '', $html);  
$html=preg_replace('/(\\\\0)+/', '', $html);  
$html=preg_replace('#(&\#*\w+)[\x00-\x20]+;#u',"\\1;",$html);  
$html=preg_replace('#(&\#x*)([0-9A-F]+);*#iu',"\\1\\2;",$html);  
$html=preg_replace("/%u0([a-z0-9]{3})/i", "&#x\\1;", $html);  
$html=preg_replace("/%([a-z0-9]{2})/i", "&#x\\1;", $html);  
    $html=str_replace(array('<?','?>'),array('<?','?>'),$html);  
   $html=preg_replace('#\t+#',' ',$html);  
$scripts=array('javascript','vbscript','script','applet','alert','document','write','cookie','window');  
foreach($scripts as $script){  
    $temp_str="";  
    for($i=0;$i<strlen($script);$i++){  
        $temp_str.=substr($script,$i,1)."\s*";  
    }  
    $temp_str=substr($temp_str,0,-3);  
    $html=preg_replace('#'.$temp_str.'#s',$script,$html);  
    $html=preg_replace('#'.ucfirst($temp_str).'#s',ucfirst($script),$html);  
}  
$html=preg_replace("#<a.+?href=/blog_article/._(alert\(|alert&\#40;|javascript\:|window\.|document\.|\.cookie|<script|<xss).*?\>.*?</a>#si", "", 
$html);  
$html=preg_replace("#<img.+?src=/blog_article/._(alert\(|alert&\#40;|javascript\:|window\.|document\.|\.cookie|<script|<xss).*?\>#si", "", $html);  
$html=preg_replace("#<(script|xss).*?\>#si", "<\\1>", $html);  
$html=preg_replace('#(<[^>]*?)(onblur|onchange|onclick|onfocus|onload|onmouseover|onmouseup|onmousedown|onselect|onsubmit|onunload|
onkeypress|onkeydown|onkeyup|onresize)[^>]*>#is',"\\1>",$html);  
//$html=preg_replace('#<(/*\s*)(alert|applet|basefont|base|behavior|bgsound|blink|body|embed|expression|form|frameset|frame|head|
html|ilayer|iframe|input|layer|link|meta|object|plaintext|style|script|textarea|title|xml|xss)([^>]*)>#is', "<\\1\\2\\3>", $html);  
$html=preg_replace('#<(/*\s*)(alert|applet|basefont|base|behavior|bgsound|blink|body|expression|form|frameset|frame|head|html|ilayer
|iframe|input|layer|link|meta|object|plaintext|style|script|textarea|title|xml|xss)([^>]*)>#is', "<\\1\\2\\3>", $html);  
$html=preg_replace('#(alert|cmd|passthru|eval|exec|system|fopen|fsockopen|file|file_get_contents|readfile|unlink)(\s*)\((.*?)\)#si',
 "\\1\\2(\\3)", $html);  
$bad=array(  
'document.cookie'   => '',  
'document.write'    => '',  
'window.location'   => '',  
"javascript\s*:"    => '',  
"Redirect\s+302"    => '',  
'<!--'               => '<!--',  
'-->'                => '-->'  
);  
foreach ($bad as $key=>$val){  
    $html=preg_replace("#".$key."#i",$val,$html);  
}  
   return   $html;  
 }  
 //过滤html标签以及敏感字符  
  
 function cleanHtml($html){  
    return cleanYellow(htmlspecialchars($html));  
 }  
 //过滤部分HTML标签  
  
 function cleanFilter($html){  
    $html=trim($html);  
    $html=preg_replace("/<p[^>]*?>/is","<p>",$html);  
    $html=preg_replace("/<div[^>]*?>/is","<div>",$html);  
    $html=preg_replace("/<ul[^>]*?>/is","<ul>",$html);  
    $html=preg_replace("/<li[^>]*?>/is","<li>",$html);  
    $html=preg_replace("/<span[^>]*?/is","<span>",$html);  
    $html=preg_replace("/<a[^>]*?>(.*)?<\/a>/is","\${1}",$html);  
    $html=preg_replace("/<table[^>]*?>/is","<table>",$html);  
    $html=preg_replace("/<tr[^>]*?>/is","<tr>",$html);  
    $html=preg_replace("/<td[^>]*?>/is","<td>",$html);  
    $html=preg_replace("/<ol[^>]*?>/is","<ol>",$html);  
    $html=preg_replace("/<form[^>]*?>/is","",$html);  
    $html=preg_replace("/<input[^>]*?>/is","",$html);  
    return $html;  
 }  
 //过滤非法的敏感字符串  
 function cleanYellow($txt){  
    $txt=str_replace(  
    array("黄色","性爱","做爱","我日","我草","我靠","尻","共产党","胡锦涛","毛泽东",  
    "政府","中央","研究生考试","性生活","色情","情色","我考","麻痹","妈的","阴道",  
    "淫","奸","阴部","爱液","阴液","臀","色诱","煞笔","傻比","阴茎","法轮功","性交","阴毛","江泽民"),  
    array("*1*","*2*","*3*","*4*","*5*","*6*","*7*","*8*","*9*","*10*",  
    "*11*","*12*","*13*","*14*","*15*","*16*","*17*","*18*","*19*","*20*",  
    "*21*","*22*","*23*","*24*","*25*","*26*","*27*","*28*","*29*","*30*","*31*","*32*","*33*","*34*"),  
    $txt);  
    return $txt;  
 }  
 //过滤敏感字符串以及恶意代码  
 function cleanAll($html){  
    return cleanYellow(cleanJsCss($html));  
 }  
 //全半角字符替换  
 function setFilter($html){  
        $arr=array('0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4',  
                '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9',  
                'A' => 'A', 'B' => 'B', 'C' => 'C', 'D' => 'D', 'E' => 'E',  
                'F' => 'F', 'G' => 'G', 'H' => 'H', 'I' => 'I', 'J' => 'J',  
                'K' => 'K', 'L' => 'L', 'M' => 'M', 'N' => 'N', 'O' => 'O',  
                'P' => 'P', 'Q' => 'Q', 'R' => 'R', 'S' => 'S', 'T' => 'T',  
                'U' => 'U', 'V' => 'V', 'W' => 'W', 'X' => 'X', 'Y' => 'Y',  
                'Z' => 'Z', 'a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd',  
                'e' => 'e', 'f' => 'f', 'g' => 'g', 'h' => 'h', 'i' => 'i',  
                'j' => 'j', 'k' => 'k', 'l' => 'l', 'm' => 'm', 'n' => 'n',  
                'o' => 'o', 'p' => 'p', 'q' => 'q', 'r' => 'r', 's' => 's',  
                't' => 't', 'u' => 'u', 'v' => 'v', 'w' => 'w', 'x' => 'x',  
                'y' => 'y', 'z' => 'z',  
                '(' => '(', ')' => ')', '〔' => '[', '〕' => ']', '【' => '[',  
                '】' => ']', '〖' => '[', '〗' => ']', '“' => '[', '”' => ']',  
                '‘' => '[', '’' => ']', '{' => '{', '}' => '}', '《' => '<',  
                '》' => '>',  
                '%' => '%', '+' => '+', '—' => '-', '-' => '-', '~' => '-',  
                ':' => ':', '。' => '.', '、' => ',', ',' => '.', '、' => '.',  
                ';' => ',', '?' => '?', '!' => '!', '…' => '-', '‖' => '|',  
                '”' => '"', '’' => '`', '‘' => '`', '|' => '|', '〃' => '"',  
                ' ' => ' ');  
    return  strtr($html,$arr);  
 }
 //搜集整理:www.
 ?>

    
[2]php 队列(Queue)数据结构的实现代码
    来源: 互联网  发布时间: 2013-12-24

什么是队列?
队列(Queue),是一种特殊的先进先出线性表,其只能在前端进行删除操作(一般称为出队),在后端进行插入操作(一般称为入队)。
进行删除操作的端称为队头,进行插入操作的端称为队尾。队列,是按照先进先出或后进后出的原则组织数据。当队列中没有元素时,称为空队列。

下面分享下,php实现的数据结构与算法- 队列(Queue)的代码。

如下:

<?php
/**
 * 数据结构与算法(PHP实现) - 队列(Queue)。
 * edit by www.
 */
class Queue {
  /**
   * 队列。
   *
   * @var array
   */
  private $queue;
 
  /**
   * 队列的长度。
   *
   * @var integer
   */
  private $size;
 
  /**
   * 构造方法 - 初始化数据。
   */
  public function __construct() {
    $this->queue = array();
    $this->size = 0;
  }
 
  /**
   * 入队操作。
   *
   * @param mixed $data 入队数据。
   * @return object 返回对象本身。
   */
  public function enqueue($data) {
    $this->queue[$this->size++] = $data;
 
    return $this;
  }
 
  /**
   * 出队操作。
   *
   * @return mixed 空队列时返回FALSE,否则返回队头元素。
   */
  public function dequeue() {
    if (!$this->isEmpty()) {
      --$this->size;
      $front = array_splice($this->queue, 0, 1);
 
      return $front[0];
    }
 
    return FALSE;
  }
 
  /**
   * 获取队列。
   *
   * @return array 返回整个队列。
   */
  public function getQueue() {
    return $this->queue;
  }
 
  /**
   * 获取队头元素。
   *
   * @return mixed 空队列时返回FALSE,否则返回队头元素。
   */
  public function getFront() {
    if (!$this->isEmpty()) {
      return $this->queue[0];
    }
 
    return FALSE;
  }
 
  /**
   * 获取队列的长度。
   *
   * @return integer 返回队列的长度。
   */
  public function getSize() {
    return $this->size;
  }
 
  /**
   * 检测队列是否为空。
   *
   * @return boolean 空队列则返回TRUE,否则返回FALSE。
   */
  public function isEmpty() {
    return 0 === $this->size;
  }
}
?>

调用示例:

<?php
$queue = new Queue();
$queue->enqueue(1)->enqueue(2)->enqueue(3)->enqueue(4)->enqueue(5)->enqueue(6);
echo '<pre>', print_r($queue->getQueue(), TRUE), '</pre>';
 
$queue->dequeue();
echo '<pre>', print_r($queue->getQueue(), TRUE), '</pre>';
?>

说明:
PHP数组函数已有类似队列的功能函数存在:array_unshift(入队)和、array_shift(出队)。


    
[3]学习centos安装php的mysql扩展
    来源: 互联网  发布时间: 2013-12-24

在centos系统中,安装完apache2+php5之后,接下来就是要安装mysql5了。
由于采用的源码安装mysql5,还需要添加php扩展。

添加扩展的基本步骤:
1、进入php源代码目录:
 

代码示例:
# cd /usr/ChenShao/php-5.3.1/

2、进入要添加的mysql扩展源码目录:
 

代码示例:
# cd ext/mysql/

2、调用已编译好的php中的phpize:
 

代码示例:
# /usr/local/php5/bin/phpize

3、然后configure:
 

代码示例:
# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-mysql=/usr/local/mysql
    (/usr/local/mysql 为mysql的安装目录)

4、

代码示例:
make && make install

5、编译之后,自动把mysql.so放到了默认的php扩展目录下(phpinfo可查看,这里为/usr/local/php5/lib/php/extensions/no-debug-zts-20090626),再修改php.ini,去掉;extension=php_mysql.so前面的分号。
注意:生成的模块名叫mysql.so,跟php.ini里面的php_mysql.so名字不一致,必须把mysql.so改名为php_mysql.so,切记切记~!
6、重启apache:
 

代码示例:
# service httpd restart

注意:如果第3步通过了,但第4步报错,则可能是源代码的问题。
可以从php.net下载一份新的文件,重新编译就可以通过了。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3