URL、表单数据、IP等处理类

<?php
class ev
{
    public $cookie;
    public $post;
    public $get;
    public $file;
    public $url;
    public $G;
    private $e;

    public function __construct()
    {if (ini_get(‘magic_quotes_gpc‘)) {  //判断php.ini是否有magic_quotes_gpc过滤(转义)函数
            $get    = $this->stripSlashes($_REQUEST);
            $post   = $this->stripSlashes($_POST);
            $this->cookie = $this->stripSlashes($_COOKIE);
        } else {
            $get    = $_REQUEST;
            $post   = $_POST;
            $this->cookie = $_COOKIE;
        }

        $this->file = $_FILES;
        $this->get = $this->initData($get);
        $this->post = $this->initData($post);
        $this->url = $this->parseUrl();
        $this->cookie = $this->initData($this->cookie);
    }

    //解析url
    public function parseUrl()
    {
        if(isset($_REQUEST[‘route‘]))
        {
            return explode(‘-‘,$_REQUEST[‘route‘]);  //解析路由
        }
        elseif(isset($_SERVER[‘QUERY_STRING‘]))
        {
            $tmp = explode(‘#‘,$_SERVER[‘QUERY_STRING‘],2);
            $tp = explode(‘&‘,$tmp[0],2);
            return explode(‘-‘,$tp[0]);
        }
        else return false;
    }

    //返回$_REQUEST数组内的值
    public function get($par)
    {
        if(isset($this->get[$par]))return $this->get[$par];
        else return false;
    }

    //返回$_POST数组内的值
    public function post($par)
    {
        if(isset($this->post[$par]))return $this->post[$par];
        else return false;
    }

    //返回URL数组中的值
    public function url($par)
    {
        $par = intval($par);
        if(isset($this->url[$par]))return $this->url[$par];
        else return false;
    }

    //设置COOKIE
    public function setCookie($name,$value,$time=3600)
    {
        if($time)$time = TIME + $time;
        else $time = 0;
        if(CDO)setCookie(CH.$name,$value,$time,CP,CDO);
        else setCookie(CH.$name,$value,$time,CP);
    }

    //获取cookie
    public function getCookie($par,$nohead = 0)
    {
        if(isset($this->cookie[CH.$par]))return $this->cookie[CH.$par];
        elseif(isset($this->cookie[$par]) && $nohead)return $this->cookie[$par];
        else return false;
    }

    //获取$_FILE
    public function getFile($par)
    {
        if(isset($this->file[$par]))return $this->file[$par];
        else return false;
    }

    //初始化数据
    public function initData($data)
    {
        if(is_array($data))
        {
            foreach($data as $key => $value)
            {
                if($this->strings->isAllowKey($key) === false)
                {
                    unset($data[$key]);
                }
                else
                $data[$key] = $this->initData($value);
            }
            return $data;
        }
        else
        {
            if(is_numeric($data))
            {
                if($data[0] === 0)return $this->addSlashes(htmlspecialchars(str_replace("‘","'",$data)));
                if(strlen($data) >= 11)return $this->addSlashes(htmlspecialchars(str_replace("‘","'",$data)));
                if(strpos($data,‘.‘))return floatval($data);
                else return intval($data);
            }
            if(is_string($data))return $this->addSlashes(htmlspecialchars(str_replace("‘","'",$data)));
            if(is_bool($data))return (bool)$data;
            return false;
        }
    }

    //去除转义字符
    public function stripSlashes($data)
    {
        if (is_array($data)) {
              foreach ($data as $key => $value) {
                $data[$key] = $this->stripSlashes($value);
              }
        } else {
              $data = stripSlashes(trim($data));
        }

        return $data;
    }

    //添加转义字符
    public function addSlashes($data)
    {
        if (is_array($data)) {
              foreach ($data as $key => $value) {
                $data[$key] = $this->addSlashes($value);
              }
        } else {
              $data = addSlashes(trim($data));
        }
        return $data;
    }

    //获取客户端IP
    public function getClientIp()
    {
        if(!isset($this->e[‘ip‘]))
        {
            if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
                $ip = getenv("HTTP_CLIENT_IP");
            else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
                $ip = getenv("HTTP_X_FORWARDED_FOR");
            else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
                $ip = getenv("REMOTE_ADDR");
            else if (isset($_SERVER[‘REMOTE_ADDR‘]) && $_SERVER[‘REMOTE_ADDR‘] && strcasecmp($_SERVER[‘REMOTE_ADDR‘], "unknown"))
                $ip = $_SERVER[‘REMOTE_ADDR‘];
            else
                $ip = "unknown";
            $this->e[‘ip‘] = $ip;
        }
        return $this->e[‘ip‘];
    }

    //根据二级域名获取信息
    public function getSecondDomain()
    {
        $domain = $_SERVER[‘HTTP_HOST‘];
        $domain = str_replace(array(‘com.cn‘,‘net.cn‘,‘gov.cn‘,‘org.cn‘),‘com‘,$domain);
        $tmp = explode(‘.‘,$domain);
        if(count($tmp) < 3)return false;
        elseif(is_numeric($tmp[0]))return false;
        else return $tmp[0];
    }
}
?>
时间: 2024-10-29 19:06:44

URL、表单数据、IP等处理类的相关文章

【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据

注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内容. 5.2 Sending HTML Form Data 5.2 发送HTML表单数据 本文引自:http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1 By Mike Wasson|June 15, 2012 作者:Mike Wasson | 日期:2012-6-15 Part

使用jQuery实现跨域提交表单数据

我们在WEB开发中有时会遇到这种情况,比如要从A网站收集用户信息,提交给B网站处理,这个时候就会涉及到跨域提交数据的问题.本文将给您介绍如何使用jQuery来实现异步跨域提交表单数据. 在jQuery中,我们使用json数据类型,通过getJSON方法来实现从服务端获取或发送数据,而当要向不同远程服务器端提交或者获取数据时,要采用jsonp数据类型.使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面.服务器端应当在JSON数据前加上回调函数名,以便

如何发送HTML表单数据

多数时候,HTML表单的目的只是为了把数据发给服务器,之后服务器再处理这些数据并发送响应给用户.虽然看起来挺简单的,但我们还是得注意一些事情以确保传送的数据不会破坏服务器.或者给你的用户制造麻烦. 数据会到哪里去 关于客户端/服务器架构 整个web都是基于一种基本的客户端/服务器架构,该架构可以归纳如下: 一个客户端(通常是Web浏览器)使用HTTP协议发送一个请求给服务器(通常是web服务器程序,譬如Apache, Nginx, IIS, Tomcat等等),而服务器则以相同的协议响应这个请求

Servlet学习笔记(二):表单数据

很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法. 1.GET 方法:GET 方法向页面请求发送已编码的用户信息.页面和已编码的信息中间用 ? 字符分隔,如下所示:http://www.test.com/hello?key1=value1&key2=value2 GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中.如果您

struts2入门之struts2获取表单数据

在上一篇博文中分享了action如何获取表单数据,在本篇博文中分享一下用struts2这个框架如何来获取表单数据. struts2获取表单数据可以分为三种方式: 1.属性封装 2.模型驱动封装 3.表达式封装 分别介绍以上三种方式: 属性封装的步骤:首先在action中定义成员变量,并写set方法(这里为了避免和后面的混淆,把get和set方法都写上得了),然后该action要访问的form表单中的属性值要和定义的成员变量名称一样,在action访问到jsp页面时,form表单中的数据都已经拿到

WebApi发送HTML表单数据:文件上传与多部分MIME

5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/2826230.html By Mike Wasson|June 21, 2012作者:Mike Wasson | 日期:2012-6-21 Part 2: File Upload and Multipart MIME第2部分:文件上传与多部分MIME This tutorial shows how to

jQuery序列化表单数据 serialize()、serializeArray()及使用

1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用一一列举出每一个参数.只需将data参数设置为 $("form").serialize() 即可. 2.serializeArray()方法 格式:var jsonData = $("form").serializeArray(); 功能:将页面表单序列化成一个JSON

(转)WebApi发送HTML表单数据:文件上传与多部分MIME

5.3 Sending HTML Form Data5.3 发送HTML表单数据(2) 本文引自:http://www.cnblogs.com/r01cn/archive/2012/12/20/2826230.html By Mike Wasson|June 21, 2012作者:Mike Wasson | 日期:2012-6-21 Part 2: File Upload and Multipart MIME第2部分:文件上传与多部分MIME This tutorial shows how to

Servlet实现表单提交(注册小功能),后台获取表单数据

用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="/RequestDemo/RequestDemo3"

josn化表单数据

? 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 /**  * josn化表单数据  * @name