<?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();
            $tp = explode(],);
            ]);
        }
        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
    )
    {
        if($time)$time = TIME + $time;
        ;
        if(CDO)setCookie(CH.$name,$value,$time,CP,CDO);
        else setCookie(CH.$name,$value,$time,CP);
    }

    //获取cookie
    )
    {
        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))
            {
                ] === )return $this->addSlashes(htmlspecialchars(str_replace("'","'",$data)));
                )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);
        )return false;
        elseif(is_numeric($tmp[]))return false;
        ];
    }
}
?>

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

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

    原文:[ASP.NET Web API教程]5.2 发送HTML表单数据:URL编码的表单数据 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内 ...

  2. 利用BeanUtils工具类封装表单数据

    一.BeanUtils工具类的使用 1.首先导入BeanUtils工具类的jar包 commons-beanutils-1.8.0.jar commons-logging-1.1.1.jar 2.se ...

  3. hyper发送表单数据

    前言 某个美丽的下午,运维把服务器上的nginx升级了,http协议也变成了http2.0,我本地的requests再也连接不到服务器,然后就找到了额hyper 但是hyper的文档写的很简单,而且相 ...

  4. flask 处理表单数据

    处理表单数据 表单数据的处理涉及很多内容,从获取数据到保存数据大致有以下步骤: 1.  解析请求,获取表单数据 2.  对数据进行必要的转换,比如讲勾选框的值转换成python的布尔值 3.  验证数 ...

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

    1.serialize() 方法: serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素 ...

  6. SpringMVC封装表单数据

    1.domain类 package com.xiaostudy.domain; public class User { private int id; private String username; ...

  7. ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第四篇:传递表单数据

    摘要      本文将完成我们“MVC公告发布系统”的公告发布功能,以此展示在ASP.NET MVC中如何传递处理表单的数据. 前言      通过前几篇文章,我们已经能比较自如的使用ASP.NET ...

  8. day 84 Xadmin组件之构建表单数据

    一 .先设置一些相关配置 1. 创建数据库模型. 在app01 下创建 from django.db import models # Create your models here. class Au ...

  9. Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据

    用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta ...

  10. Struct2提交表单数据到Acion

    Struct2提交表单数据到Action,Action取表单的数据,传递变量.对象 HTML.jsp <form action="reg.do" method="p ...

随机推荐

  1. 任督二脉之Shell中的正则表达式

    VBird说学习Linux,掌握了Shell和正则就相当于打通了任督二脉,此后能力的成长才会突飞猛进. Shell的基础学习之前已经总结了一篇博客:http://www.cnblogs.com/jyz ...

  2. Mac常用基本命令/常用Git命令

    Git地址: https://github.com/mancongiOS/command-line基本命令 目录/文件的操作 mkdir "目录名" 在当前路径下创建一个文件夹 m ...

  3. nginx的部署与发布

    1.在http://nginx.org/en/download.html下载nginx.tar.gz包. 2.上传发送到服务器(wcp工具) 3.用tar -xf命令解压gz包 4.[配置安装变量]: ...

  4. UIScrollView子控件的布局

    scorllView内部子控件添加约束的注意点: 1.子控件的尺寸不能通过UIScrollView来计算 *比如可以设置固定值 (width==100 height ==100) *比如可以相对于UI ...

  5. ASP.NET Core学习零散记录

    赶着潮流听着歌,学着.net玩着Core 竹子学Core,目前主要看老A(http://www.cnblogs.com/artech/)和tom大叔的博客(http://www.cnblogs.com ...

  6. MySQL5中大数据错误:Packet for query is too large (****** > ******). You can change this value on the server by setting the max_allowed_packet' variable.;

    使用的MySQL数据库版本:5.5 插入或更新字段有大数据时(大于1M),会出现如下错误: ### Cause: com.mysql.jdbc.PacketTooBigException: Packe ...

  7. 文本对象模型(Document Object Model)

    本文内容: 1. 概述 2. DOM中的节点类型 3. DOM节点的选取 4. 存取元素属性 5.DOM元素的增删 6.小结 ★ 概述 文本对象模型(DOM)是一个能够让程序和脚本动态访问和更新文档内 ...

  8. c#重点[数据类型,构造方法,变量,变量,运算符,装箱,拆箱]

    1.命名规范    类  :名词 每个单词的首字母大写 Dog Student  PersonClass 字段:首个字母小写,如果有多个单词,后面的单词首字母大写 string name=" ...

  9. Winform中的窗体一些常用属性

    Winform窗体的常用窗体属性 1)窗体全屏显示 this.DesktopBounds = Screen.GetWorkingArea(this);  //全屏显示桌面 注:可以放在初始化方法中,也 ...

  10. 基于FreeBSD 64位内核的kFreeBSD无法在Virtualbox下安装

    ArchBSD同上 感谢大A(豆瓣)的投稿 :)