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();
$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等处理类的更多相关文章
- 【ASP.NET Web API教程】5.2 发送HTML表单数据:URL编码的表单数据
原文:[ASP.NET Web API教程]5.2 发送HTML表单数据:URL编码的表单数据 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本系列教程,请先看前面的内 ...
- 利用BeanUtils工具类封装表单数据
一.BeanUtils工具类的使用 1.首先导入BeanUtils工具类的jar包 commons-beanutils-1.8.0.jar commons-logging-1.1.1.jar 2.se ...
- hyper发送表单数据
前言 某个美丽的下午,运维把服务器上的nginx升级了,http协议也变成了http2.0,我本地的requests再也连接不到服务器,然后就找到了额hyper 但是hyper的文档写的很简单,而且相 ...
- flask 处理表单数据
处理表单数据 表单数据的处理涉及很多内容,从获取数据到保存数据大致有以下步骤: 1. 解析请求,获取表单数据 2. 对数据进行必要的转换,比如讲勾选框的值转换成python的布尔值 3. 验证数 ...
- jQuery序列化表单数据 serialize()、serializeArray()及使用
1.serialize() 方法: serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素 ...
- SpringMVC封装表单数据
1.domain类 package com.xiaostudy.domain; public class User { private int id; private String username; ...
- ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第四篇:传递表单数据
摘要 本文将完成我们“MVC公告发布系统”的公告发布功能,以此展示在ASP.NET MVC中如何传递处理表单的数据. 前言 通过前几篇文章,我们已经能比较自如的使用ASP.NET ...
- day 84 Xadmin组件之构建表单数据
一 .先设置一些相关配置 1. 创建数据库模型. 在app01 下创建 from django.db import models # Create your models here. class Au ...
- Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据
用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta ...
- Struct2提交表单数据到Acion
Struct2提交表单数据到Action,Action取表单的数据,传递变量.对象 HTML.jsp <form action="reg.do" method="p ...
随机推荐
- iOS-动态计算Label的高度
一. 要求 1.根据网络请求的回来的字符串内容,动态计算Label的高度. 二. 注意点 1. 要注意设置label 的 numberOfLines 为0; 2. MAXFLOAT 的作用. 设置高度 ...
- 基于openssl的单向和双向认证
1.前言 最近工作涉及到https,需要修改nginx的openssl模块,引入keyless方案.关于keyless可以参考CloudFlare的官方博客: https://blog.cloudfl ...
- Android View之用户界面...
PS:Android的控件真的是很多...现在还在忙到控件...也是神了.... 学习内容: 1.Spinner下拉菜单... 2.AutoComplete TextView自动完成文本框... 1. ...
- SQL Server里因丢失索引造成的死锁
在今天的文章里我想演示下SQL Server里在表上丢失索引如何引起死锁(deadlock)的.为了准备测试场景,下列代码会创建2个表,然后2个表都插入4条记录. -- Create a table ...
- 基于HTML5技术的电力3D监控应用(三)
继(一)和(二)之后不少,不少网友问我移动终端的使用问题,因为我们项目这次采用Android平板终端,所以我对这方面有点肤浅的研究,这篇分享些项目经验总结,希望对大家有所帮助. 电力3D项目去年底刚立 ...
- 安装 Oracle P6 EPPM 16 R1 database for 12C
. 打开命令提示符(Windows)或 终端(如果UNIX)和连接数据库使用以下命令: sqlplus sys/password@dbservicename as sysdba 连接到: sqlplu ...
- C# WinFrom 跨线程访问控件
1.跨线程访问控件委托和类的定义 using System; using System.Windows.Forms; namespace ahwildlife.Utils { /// <summ ...
- Foreach能够循环的本质
我们对foreach循环并不陌生,在C#中我们用得非常多,但是我们是否清楚foreach循环的本质呢? 众所周知,foreach循环能够遍历 数组 ,集合 .但是我们自己定义的一个类是否能够通过fo ...
- 安装性能测试工具:sysbench和使用apache的ab
一.软件的用途,它主要包括以下几种方式的测试:1.cpu性能2.磁盘io性能3.调度程序性能4.内存分配及传输速度5.POSIX线程性能6.数据库性能(OLTP基准测试) 这个软件为什么找不到官网呢? ...
- 六个创建模式之单例模式(Singleton Pattern)
定义: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.三个特点:一个类只有一个实例:必需自己创建这个实例:必需自行向整个系统提供这个实例. 结构图: Singleton:单例类,提 ...