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 ...
随机推荐
- Velocity魔法堂系列二:VTL语法详解
一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...
- SpringMVC从Controller跳转到另一个Controller(转)
http://blog.csdn.net/jackpk/article/details/44117603 [PK亲测] 能正常跳转的写法如下: return "forward:aaaa/bb ...
- linq之join子句
前面我们总结Linq查询子句总共有8个,join子句是我们讲解的最后一个子句.join子句也是相对比较复杂的,所以最后来讲.join子句可以处理两个数据源之间的联系,当然这两个数据源之间必须存在相关联 ...
- [WCF实践]1.WCF使用net.tcp寄宿到IIS中
一.IIS部分 环境:Windows Server 2008 R2 1.安装WAS,如下图所示: 2.网站net.tcp协议绑定,如下图所示: 3.网站启用net.tcp,如下图所示: 二 ...
- asp.net学习之Repeater控件
asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
- C# 生成XML空元素/空节点自动换行解决方案
使用DataSet可以直接输出XML,并可指定是否带有Schema: ds.WriteXml(XMLFile,XmlWriteMode.WriteSchema ) 不过,这样将不会输出值为Null的字 ...
- Visual Studio 2013 Preview 新功能
先来看一下Visual Studio的版本历史: 1. Visual Studio.NET 2002 2. Visual Studio.NET 2003 3. Visual Studio.NET 20 ...
- Convert string to binary and binary to string in C#
String to binary method: public static string StringToBinary(string data) { StringBuilder sb = new S ...
- Webform(Repeater控件)
一.Repeater控件 有五大模板 ItemTemplate :有多少条数据,执行多少遍 AlternatingItemTemplate : 对交替数据项进行格式设置 Se ...