<?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. Java后端书架

    本书架主要针对Java后端开发与架构. 更新记录:4.0版把第五部份-具体技术的书整块拿掉了.<TCP/IP详解 卷1:协议>出到了第二版,增加<SRE:Google运维解密> ...

  2. Tools - Windows

    1)文本操作 Ctrl + C / Ctrl + V / Ctrl + X / Ctrl + Z / Ctrl + A:复制/粘贴/剪贴/撤销/全选. 2)窗口左右分屏 Win + 方向键:上(最大化 ...

  3. 30个实用的 Photoshop 动作《免费下载》

    这篇文章向设计师们分享30个实用的 Photoshop 动作下载.Photoshop 的动作是用集合了许多步的操作的集合,使执行任务自动化,这为设计者在进行图像处理的操作上带来很多方便.同时用户还可以 ...

  4. Swift_3.0_开启注释功能

    1. Swift_3.0 没法快捷键(command+/)注释的原因:这个是因为苹果解决xcode ghost,把插件屏蔽了. 2. 解决办法: (1) 终端输入: sudo /usr/libexec ...

  5. SQL Server中的事务日志管理(2/9):事务日志架构概述

    当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...

  6. XPATH使用总结

    最近公司里需要写一些爬虫项目,所以去接触学习了xpath的内容.在w3c上给出了xpath的语法,但是我感觉不全,而且讲得也不详细,我又去网上找了一些文章,总结一下. 这几个都是比较常用的,能解决基本 ...

  7. SQL实现分组查询取前几条记录

    我要实现的功能是统计订单日志表中每一个订单的前三条日志记录,表结构如下: 一个订单在定点杆日志表中有多条记录,要根据时间查询出每一个订单的前三条日志记录,sql如下: select b.OrderNu ...

  8. 构建之法 第6~7章读后感和对Scrum的理解

    第六章-敏捷流程 第六章主要详细介绍了敏捷流程,在软件工程范畴里,“敏捷流程”是一系列价值观和方法论的集合.这一章以敏捷流程的Scrum方法论而展开,而敏捷流程的精髓就是在于快速的交付. 敏捷开发的流 ...

  9. .net 读书笔记

    好书不能只读一遍,这两天又翻看了一遍<你必须知道的.NET>,重温了下基础,重温了下经典,简单记录了下来. 内存分配:CLR 管理内存的区域,主要有三块,分别为: 线程的堆栈,用于分配值类 ...

  10. C# Form实现自定义光标

    WinForm代码如下: using System; using System.Reflection; using System.Runtime.InteropServices; using Syst ...