zoukankan      html  css  js  c++  java
  • php过滤字符串函数

    <?php
    class request
    {
        public  function __construct()
        {
            if(!get_magic_quotes_gpc())
            {
                if(!empty($_POST))
                {
                    foreach ($_POST as $k => &$v)
                    {
                        if(is_array($v))
                        {
                            @array_walk($v, 'urldecode');
                            @array_walk($v, 'addslashes');
                        }
                        else
                        {
                            $v = addslashes(urldecode($v));
                        }
                        $p[$k] = $v;
                    }
                    $_POST = $p;
                    unset($p);
                }
                if(!empty($_GET))
                {
                    foreach ($_GET as $k => &$v)
                    {
                        if(is_array($v))
                        {
                            @array_walk($v, 'urldecode');
                            @array_walk($v, 'addslashes');
                        }
                        else
                        {
                            $v = addslashes(urldecode($v));
                        }
                        $g[$k] = $v;
                    }
                    $_GET = $g;
                    unset($g);
                }
            }
        }
        public static function getQuery( $key )
        {
            if( isset( $_GET[$key]) )
            {
                return self::xss_clean($_GET[$key]);
            }
            else
            {
                return false;
            }
        }
        
        public static function getPost( $key )
        {
            if( isset( $_POST[$key]) )
            {
                return self::xss_clean($_POST[$key]);
            }
            else
            {
                return false;
            }        
        }
        public static function getServer($key)
        {
            $key = strtoupper($key);
            if(isset($_SERVER[$key]))
            {
                return self::xss_clean($_SERVER[$key]);
            }
            return false;
        }
        
        public static function  getSession( $key )
        {
            if( isset( $_SESSION[$key]) )
            {
                return self::xss_clean($_SESSION[$key]);
            }
            else
            {
                return false;
            }        
        }    
        public static function getCookie( $key )
        {
            if( isset( $_COOKIE[$key]) )
            {
                return $_COOKIE[$key];
            }
            else
            {
                return false;
            }        
        }
            /**
         * 过滤非法字符(分发)
         */
        private static function xss_clean($str) {
            if (is_array($str) && !empty($str)) {
                $str = self::xss_clean_arr($str);
            } else {
                $str = self::xss_clean_str($str);
            }
            return $str;
        }

        /**
         * 过滤非法字符(数组)
         */
        private static function xss_clean_arr($str) {
            foreach ($str as $key => $val) {
                if (is_array($val)) {
                    $val = self::xss_clean_arr($val);
                } else {
                    $val = self::xss_clean_str($val);
                }
                $arr[$key] = $val;
            }
            return $arr;
        }

        /**
         * 过滤非法字符(字符串)
         */
        private static function xss_clean_str($str) {
            $str = preg_replace('#(alert|cmd|passthru|eval|exec|expression|system|fopen|fsockopen|file|file_get_contents|readfile|unlink)(s*)((.*?))#si', "\1\2&#40;\3&#41;", $str);
            if (get_magic_quotes_gpc()) {
                return $str;
            } else {
                return addslashes($str);
            }
        }    
    }

  • 相关阅读:
    实用SQL命令收集
    ZedGraph在Asp.net中的应用
    怎样制作一张万能的Win XP安装光盘
    【转】poj 1823 hotel 线段树【Good】
    【转】unique()函数
    POJ1389Area of Simple Polygons
    【转】poj 1823
    【转】POJ 1177 (线段树+离散化+扫描线) 详解
    【转】POJ各题算法分类和题目推荐
    【转】sort()函数定义在头文件<algorithm>中,它把容器中的数据重新排序成非递减序列
  • 原文地址:https://www.cnblogs.com/kwishly/p/3529999.html
Copyright © 2011-2022 走看看