Discuz 学习笔记一 :getgdc 和get_client_ip
- Getgdc函数
discuz有一个超级变量的自定义函数:
function getgpc($k, $type='GP') {
$type = strtoupper($type);
switch($type) {
case 'G': $var = &$_GET; break;
case 'P': $var = &$_POST; break;
case 'C': $var = &$_COOKIE; break;
default:
if(isset($_GET[$k])) {
$var = &$_GET;
} else {
$var = &$_POST;
}
break;
}
return isset($var[$k]) ? $var[$k] : NULL; //注意这里没有设置的时候返回的是NULL.
}
这里我讲一下,比如你要获取$_GET['odaboy']的值,那么你只要这么调用getgpc('odaboy','G'),同时你也可以这样getgpc('odaboy')这种默认接受GET和POST,
这个函数在function_core.php文件里面
- 获取ip地址
private function _get_client_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {
foreach ($matches[0] AS $xip) {
if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {
$ip = $xip;
break;
}
}
}
return $ip;
}
不过这样有风险,给了客户端伪造ip的机会。具体看这篇文章:
http://www.cnblogs.com/kingthy/archive/2007/11/24/970783.html
最新文章
- win10本地搭建apache+php+mysql运行环境
- 安装win8、ubuntu双系统的过程
- java日期和字符串的相互转换
- JDBC操作Oracle数据库
- Cache和Buffer的区别
- java学习笔记3
- 对Cookie进行增删改查
- 开发板-PC机(宿主机)-虚拟机(VM)之间网络通信设置方法及须要注意的问题
- Unity Notes调制粒子系统的颗粒的最大数目
- mplayer最全的命令
- 爬虫:把廖雪峰的教程转换成 PDF 电子书
- sprintf的用法
- dubbo调用负载均衡
- Python内置函数(23)——dict
- MRPT 安装使用
- iOS 新浪微博-1.1框架升级
- HDU 5468 Puzzled Elena (dfs + 莫比乌斯反演)
- JavaScript -- Window-Blur
- Kernel 4.9的BBR拥塞控制算法与锐速
- Car 加油
热门文章
- CentOS7.4 关闭firewall防火墙,改用iptables
- BZOJ 3130: [Sdoi2013]费用流 网络流 二分 最大流
- hdu 1973 bfs+素数判断
- 【POJ】2796:Feel Good【单调栈】
- Gunicorn配置部分的翻译
- 安卓中WebKit的使用
- php curl 发送get和post请求示例
- BZOJ 1854: [Scoi2010]游戏 并查集
- Xcode 中的IOS工程模板
- git push时提示";Everything up-to-date";