怎样限制IP?
我用PHP作了一个BBS怎样才能限制某些IP能用而在IP限制里的不能用?
礼!
谢谢
问题点数:0、回复次数:6Top
1 楼minghui000(沉迷网络游戏)回复于 2003-11-02 00:01:44 得分 0
upTop
2 楼xiahouwen(武眉博<活靶子.NET>)回复于 2003-11-02 00:35:38 得分 0
检测客户端IP
判断是否属于ban掉的ip(从禁止IP表里判断)
返回true则定向到
403页面Top
3 楼eagle_gui(凉开水@www.dd16.net)回复于 2003-11-02 12:45:12 得分 0
将限制的IP存进数据库或以文件存放,
用户登录你的BBS的时候,检测被限制IP表或文件里是否有该IP,有则进行跳转或输出信息Top
4 楼yueok(悦)回复于 2003-11-02 12:47:33 得分 0
可以直接读出访问者的IP。。。和存在数据库的数据比一下。。
如果复杂一点可以采用部分匹配的方式,就可以限制IP段了Top
5 楼qlyfe(邱)回复于 2003-11-02 12:58:39 得分 0
这样会不会增加服务器负担
说觉得每一次判断一下,不爽Top
6 楼hodat(华帝)回复于 2003-11-02 14:21:35 得分 0
<?
/*
MySQL Table:
CREATE TABLE Use_Ip (
Use_Ip varchar(15) Not Null,
PRIMARY KEY (Use_Ip)
) TYPE=MyISAM;
类使用方法:
新建对象
$c=new CheckIp("MySQL主机","Mysql用户名","Mysql密码","Mysql数据库","Mysql数据表");
插入新的禁用IP
if($c->InsertIp("127.0.0.*") == false){
echo "cannot insert Ip!!";
exit;
}
删除禁用IP
$c->DeleteIp("127.0.0.*");
检测IP
if($c->Check("127.0.0.1")){
echo "your can not pass";
exit;
}
禁用IP格式
单ip: 127.0.0.1
IP段: 127.0.0.*
127.0.*.*
127.*.*.*
禁用所有Ip: *.*.*.*
*/
class CheckIp {
var $MySQL_Host;
var $MySQL_User;
var $MySQL_Pass;
var $MySQL_DB;
var $MySQL_Table;
var $CheckIP;
var $conn;
function CheckIp($M_h,$M_u,$M_p,$M_DB,$M_t){
$this->MySQL_Host = $M_h;
$this->MySQL_User = $M_u;
$this->MySQL_Pass = $M_p;
$this->MySQL_DB = $M_DB;
$this->MySQL_Table = $M_t;
$this->conn=mysql_connect($this->MySQL_Host, $this->MySQL_User, $this->MySQL_Pass);
if(!mysql_select_db($this->MySQL_DB,$this->conn)) $this->error(mysql_error());
}
function InsertIp( $M_ip ){
$sql="INSERT INTO ".$this->MySQL_Table." VALUES ( '$M_ip' )";
if(@mysql_query($sql,$this->conn)){
$this->error(mysql_error());
return false;
}
return true;
}
function DeleteIp( $M_ip ){
$sql="DELETE FROM ".$this->MySQL_Table." WHERE Use_Ip='$M_ip'";
if(@mysql_query($sql,$this->conn)){
return false;
}
return true;
}
function Check( $c_ip ){
$user_ip=$c_ip;
$u_i_array=explode(".",$user_ip);
$query="SELECT * FROM ".$this->MySQL_Table;
$result=mysql_query($query,$this->conn);
$Check_Mask = 0;
while($row=mysql_fetch_Array($result,$this->conn)){
$m_array=explode(".",$row[Use_Ip]);
if($m_array[3]==$u_i_array[3] || $m_array[3]=="*"){
if($m_array[2]==$u_i_array[2] || $m_array[2]=="*"){
if($m_array[1]==$u_i_array[1] || $m_array[1]=="*"){
if($m_array[0]==$u_i_array[0] || $m_array[0]=="*"){
$Check_Mask++;
break;
}
}
}
}
}
if($Check_Mask > 0){
return true;
}
return false;
}
function error( $msg ){
echo $msg;
exit;
}
}
?>Top




