下载帝国网站管理系统5.0正式版
 帝国论坛技术交流区网络编程禁用IP的mysql+php设计
帝国CMS5.0正式版发布
中客:空间产品随时可无条件退款!
测试:生成20万数据共用107分钟
《帝国下载系统》全面免费
Mysql大数据备份工具下载
帝国软件旗下新站 - 站长工具
1G双线帝国空间+200M数据库=158
帝国CMS教程下载
主题:禁用IP的mysql+php设计 [加入收藏夹]   

hicode
用户头衔:版主

精华贴   :1
发贴数   :9148
经验值   :19972
注册时间:2007-07-20
信息 搜索 好友 发送悄悄话 《帝国网站管理系统》基础教程下载】   [第 1 楼]
禁用IP的mysql+php设计
来源:phpx
作者:qh663

安全,这是很多网页程序设计都要面临的问题。
禁用IP是安全的一部份。下面就分析下禁止IP的php+mysql的程序设计,不足之处,请大家提出意见。

就来个简单的例子来说明一下。


CREATE TABLE `banned` (
  `ip_start` int(10) NOT NULL default '0',
  `ip_end` int(10) NOT NULL default '0',
) TYPE=MyISAM COMMENT='禁止IP列表';
上面是新建一个数据表,表有两个字段用来记录要禁用IP的起始。ip_tart是开始,ip_end是结束。ip_start的值要比ip_end值小或相等。范围 是0~4294967295。如果只有一个IP,那么这条记录ip_start与ip_end的字段值相同。

注意,这两个字段都是以int类型出现的,为什么呢?因为一个ip是可以转换为一个相对应的十进制数字。数字大小的对比占有很强的优势。

下例输入一个禁止的IP。127.0.0.1
INSERT INTO `banned` (`ip_start`, `ip_end`) VALUES (INET_ATON( '127.0.0.1' ),INET_ATON( '127.0.0.1' ));
如果要禁用一段IP,如192.168.1.1~192.168.255.2255
INSERT INTO `banned` (`ip_start`, `ip_end`) VALUES (INET_ATON( '192.168.1.1' ),INET_ATON( '192.168.255.255' ));

我们可以从数据表中看到,上面插入的记录的 ip_start与ip_end字段值是2130706433。因为mysql的函数INET_ATON将ip转为了数字形式。

现在,禁止一个IP,只要看一下,这个IP是不是在这个数据表里所包函的一条记录。

$ip = '127.0.0.1';
$sql = "SELECT count(*)         FROM `banned` WHERE ip_start  >=INET_ATON('$ip') and ip_end <= INET_ATON('$ip') ";
$result =  mysql_query($sql);
$banned = mysql_fetch_array($result);
echo $banned[0] ? "禁止IP" : "通行IP" ;




2007-07-22 09:05:29 已设置保密 顶部 回复 引用 报告 编辑 删除

wm_chief
用户头衔:管理员

精华贴   :21
发贴数   :47587
经验值   :108259
注册时间:2002-10-30
信息 搜索 好友 发送悄悄话 《帝国网站管理系统》零基础实例入门教程】   [第 2 楼]

用mysql函数转?推荐用php函数转换



[零基础入门教程] [模板制作教程] [采集使用教程]
官方使用交流群:12261591
2007-07-22 13:22:26 已设置保密 顶部 回复 引用 报告 编辑 删除


快速回复
内容

使用EBB代码
使用smile代码
显示签名
自动分析url
自动分析img
表情                   
                
    (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1