喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

$5.95 Web Hosting     

上一主题 下一主题
     
标题: PHP限制IP访问代码(转)  
 
带头大哥
论坛元老
Rank: 8Rank: 8



UID 102362
精华 0
积分 6100
帖子 18
金钱 6100 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2007-11-29
状态 离线
[广告]: Enom域名自助付费 自助注册 自助PUSH 主流域名COM等一律57.99元年
PHP限制IP访问代码(转)

<?php
/*********************************************
* 文件:limitip.php
* 用途:IP限制程序
* 版本:v1.0
* 日期:2005-1-7 12:34
* 作者:heiyeluren (heiyeluren@163.com)
* 版权:http://www.unixsky.net
*********************************************/

error_reporting(7);
session_start();

// 发送字符头信息
if ($headercharset)
header("Content-Type:text/html; charset=gb2312");

// 加载公共文件
require_once("config.php");
require_once("global.php");
require_once("db_mysql.php");

/***************** 进行客户端能否访问本网站校验 ************/

// 获取客户端IP
if(getenv('HTTP_CLIENT_IP')) {
$client_ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$client_ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$client_ip = getenv('REMOTE_ADDR');
} else {
$client_ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}

// 分解客户端IP
$cip = explode(".", $client_ip);

// 连接数据库
$db = new DB_Sql();
$err = $db->connect();

/*  限制远程IP访问, PS: 这段代码真晕,呵呵,用了8个if, -_-#  */
// 从数据库中提取存储的要限制的IP地址
$query_str = "SELECT limit_ip FROM us_limitip";
$db->query($query_str);
// 把结果循环提取,一个个进行校验
while ($db->next_record())
{
$limit_ip = $db->f("limit_ip");
$lip = explode(".", $limit_ip);
// 如果限制IP的第一个是*或者是0的话就跳到错误页
if (($lip[0]=='*') || ($lip[0]=='0'))
  header("Location:../error.php?errid=300");
// 如果刚好客户端IP等于我们限制IP就跳到错误页
if ($client_ip==$limit_ip)
  header("Location:../error.php?errid=300");
// 如果第一组IP一致进行第二组IP的匹配
if ($cip[0] == $lip[0])
{
  // 如果第二组限制IP是*就跳到错误页
  if ($lip[1]=='*')
   header("Location:../error.php?errid=300");
  // 第二组IP匹配就进行第三组IP匹配
  if ($cip[1]==$lip[1])
  {
   // 如果第三组限制字符是*就跳到错误页
   if ($lip[2]=='*')
    header("Location:../error.php?errid=300");
   // 如果第三组IP匹配就跳到第三组校验
   if ($cip[2]==$lip[2])
   {
    // 如果第四组限制IP是*或0就跳到错误页
    if (($lip[3]=='*') || ($lip[3]=='0'))
     header("Location:../error.php?errid=300");
   }
  }
}  
}
// 释放数据库查询结果
$db->free();

/****************** IP校验结束 ******************/

?>
2007-11-30 07:45 AM#1
查看资料  发短消息  顶部
 
loveloop
注册会员
Rank: 2



UID 78018
精华 0
积分 189
帖子 157
金钱 189 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-8-10
来自 北京市
状态 离线
[广告]: Enom域名自助付费 自助注册 自助PUSH 主流域名COM等一律57.99元年
这个做的真不怎么的!
代码冗余,效率低下

本来只需几行的代码即可以完成的




绝想日记网
2007-12-10 05:27 PM#2
查看资料  访问主页  Blog  发短消息  QQ  Yahoo!  顶部
 
heiyeluren
注册会员
Rank: 2
初级会员



UID 24581
精华 0
积分 120
帖子 132
金钱 120 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2003-11-13
状态 离线
[推荐阅读] 专家推荐:学习Linux的九条忠告
带头大哥兄,你好,这个是我三年前写的文章,然后,呵呵,麻烦你能不能把文章前面的邮件地址给去掉呀,因为会收到很多垃圾邮件,非常感谢!! :-)
把这两段信息去掉:
* 作者:heiyeluren (*****@163.com)
* 版权:http://www.unixsky.net

有劳了,非常感谢!

[ 本帖最后由 heiyeluren 于 2007-12-11 01:09 PM 编辑 ]
2007-12-11 01:08 PM#3
查看资料  访问主页  发短消息  顶部
 
ydl0025
注册会员
Rank: 2


UID 105120
精华 0
积分 54
帖子 81
金钱 54 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2007-12-29
来自 北京
状态 离线
[推荐阅读] PHP程序员 待遇优 郑州
需要这么写吗?

直接一条mysql查询语句就可以解决了的,
"select * frome table_name where '要限制的ip'=数据表存储的要限制的ip字段"
判断这条查询语句返回值,如果有值则此ip是被限制的,否则不是被限制的
2007-12-29 02:01 PM#4
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
甜甜
新手上路
Rank: 1


UID 70099
精华 0
积分 1
帖子 121
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-22
来自 家里
状态 离线
[推荐阅读] 全球货运上市了
正则啊。。。



我是甜甜
2008-1-4 11:39 AM#5
查看资料  发短消息  QQ  ICQ 状态  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.232263 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP