用php如何实现禁止某段ip访问 俺只会html语言写点简单网页,请问纯粹html语言能不能实现禁止某段ip访问?不要求特殊比如弹出错误页面等,就ping不通一样就可以了如果必须要程序实现的吧,俺真成文盲了不过我知道我的空间支持php和my sql的,不知道如何用php实现禁止某段ip访问并嵌入网页中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果只有一个服务的话,扔iptables里去 你的空间商也提供这种免费服务,你要自己实现写PHP代码, 用户访问的时候取到用户ip,把想禁止的ip存到数据库进行对比,不让登录就ok了 如果楼主是要做点程序功能那这建议就对了步骤很简单1 - 往数据库中插入你说禁止的ip2 - 每次用户来访 用php调出他的ip3 - 和数据库对比一下 如果匹配则禁止另外还要考虑路由器和动态ip的问题哦不懂再问! [code]<?php//判断IP//===================//获取访问者的IPif($_SERVER['HTTP_X_FORWARDED_FOR']){ $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];}elseif($_SERVER['HTTP_CLIENT_IP']){ $onlineip=$_SERVER['HTTP_CLIENT_IP'];}else{ $onlineip=$_SERVER['REMOTE_ADDR'];}$onlineip =substrs($onlineip,16);//截取IPfunction substrs($content,$length) { if($length && strlen($content)>$length){ $num=0; for($i=0;$i<$length-3;$i++) { if(ord($content[$i])>127){ $num++; } } $num%2==1 ? $content=substr($content,0,$length-4):$content=substr($content,0,$length-3); $content.='..'; } return $content;}//分析IP是否在 列表内function cvipfrom($ip){ global $ipa0; $d_ip=explode(".",$ip); $f_n=file_exists("./ipdata/$d_ip[0].txt") ? "./ipdata/$d_ip[0].txt" : './ipdata/0.txt'; $ip=implode('.',d_ip($d_ip)); $db=fopen($f_n,"rb"); flock($db,LOCK_SH); $d=fread($db,filesize($f_n)); $s_ip="\n$d_ip[0].$d_ip[1].$d_ip[2]"; if($s=strpos($d,$s_ip)){ !($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db); }else{ $s_ip="\n$d_ip[0].$d_ip[1]"; if($s=strpos($d,$s_ip)){ !($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db); }elseif($s=strpos($d,"\n$d_ip[0]") && $f_n=='./ipdata/0.txt'){ $s_ip="\n$d_ip[0]"; !($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db); }else{ $f='';//IP 没有在受限列表内就返回空 } } if(empty($f) && $s!==false){ while(ereg("^$s_ip","\n".$l_d)!==false){ if($ipa0==1 || $f=s_ip($db,$s,$ip,$l_d)) break; list($l_d,$cff)=nset($db); $cff && $ff=$cff; } } fclose($db); return $f ? $f : $ff;}function s_ip($db,$s,$ip,$l_d=''){ global $ipa0; if(!$l_d){ fseek($db,$s+1,SEEK_SET); $l_d=fgets($db,100); } $ip_a=explode("\t",$l_d); $ip_a[0]=implode('.',d_ip(explode('.',$ip_a[0]))); $ip_a[1]=implode('.',d_ip(explode('.',$ip_a[1]))); if($ip<$ip_a[0]) $ipa0=1; if ($ip>=$ip_a[0] && $ip<=$ip_a[1]) return $ip_a[2].$ip_a[3];}function nset($db){ $l_d=fgets($db,100); $ip_a=explode("\t",$l_d); return array($l_d,$ip_a[2].$ip_a[3]);}function d_ip($d_ip){ for($i=0; $i<=3; $i++){ $d_ip[$i] = sprintf("%03d", $d_ip[$i]); } return $d_ip;}$ipfrom=cvipfrom($onlineip);if(!empty($ipfrom)){ //ipfrom IP来源不为空...禁止访问 显示 FUCK YOU die("fuck you");}?>[/code] php搜索中用到.idx文件。 php账号输入进入页面之后保持登陆状态的怎么实现啊?很急! iconv('gbk','utf-8',$html)网页编码转换失败 discuz 用户注册时向主站user表和cdb_members表同步插入数据问题 PHP服务端返回Ajax处理后的字符串是怎么写的? 用textarea提交了一篇文章,却发现所有的格式都乱了,请教大家 为什么不能连接到数据库,请大家帮忙,谢谢 关于PHP网页地址传参数的问题,高手帮忙呀! 新手问题! 请教mysql存储过程执行成功,php却取不到值 在线急等:直接输出表单复选框内容出错 关于FCKeditor的问题
如果楼主是要做点程序功能
那这建议就对了
步骤很简单
1 - 往数据库中插入你说禁止的ip
2 - 每次用户来访 用php调出他的ip
3 - 和数据库对比一下 如果匹配则禁止另外还要考虑路由器和动态ip的问题哦不懂再问!
<?php
//判断IP
//===================
//获取访问者的IP
if($_SERVER['HTTP_X_FORWARDED_FOR']){
$onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}elseif($_SERVER['HTTP_CLIENT_IP']){
$onlineip=$_SERVER['HTTP_CLIENT_IP'];
}else{
$onlineip=$_SERVER['REMOTE_ADDR'];
}
$onlineip =substrs($onlineip,16);
//截取IP
function substrs($content,$length) {
if($length && strlen($content)>$length){
$num=0;
for($i=0;$i<$length-3;$i++) {
if(ord($content[$i])>127){
$num++;
}
}
$num%2==1 ? $content=substr($content,0,$length-4):$content=substr($content,0,$length-3);
$content.='..';
}
return $content;
}
//分析IP是否在 列表内
function cvipfrom($ip){
global $ipa0;
$d_ip=explode(".",$ip);
$f_n=file_exists("./ipdata/$d_ip[0].txt") ? "./ipdata/$d_ip[0].txt" : './ipdata/0.txt';
$ip=implode('.',d_ip($d_ip));
$db=fopen($f_n,"rb");
flock($db,LOCK_SH);
$d=fread($db,filesize($f_n));
$s_ip="\n$d_ip[0].$d_ip[1].$d_ip[2]";
if($s=strpos($d,$s_ip)){
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}else{
$s_ip="\n$d_ip[0].$d_ip[1]";
if($s=strpos($d,$s_ip)){
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}elseif($s=strpos($d,"\n$d_ip[0]") && $f_n=='./ipdata/0.txt'){
$s_ip="\n$d_ip[0]";
!($f=s_ip($db,$s,$ip)) && list($l_d,$ff)=nset($db);
}else{
$f='';//IP 没有在受限列表内就返回空
}
}
if(empty($f) && $s!==false){
while(ereg("^$s_ip","\n".$l_d)!==false){
if($ipa0==1 || $f=s_ip($db,$s,$ip,$l_d)) break;
list($l_d,$cff)=nset($db);
$cff && $ff=$cff;
}
}
fclose($db);
return $f ? $f : $ff;
}
function s_ip($db,$s,$ip,$l_d=''){
global $ipa0;
if(!$l_d){
fseek($db,$s+1,SEEK_SET);
$l_d=fgets($db,100);
}
$ip_a=explode("\t",$l_d);
$ip_a[0]=implode('.',d_ip(explode('.',$ip_a[0])));
$ip_a[1]=implode('.',d_ip(explode('.',$ip_a[1])));
if($ip<$ip_a[0]) $ipa0=1;
if ($ip>=$ip_a[0] && $ip<=$ip_a[1]) return $ip_a[2].$ip_a[3];
}
function nset($db){
$l_d=fgets($db,100);
$ip_a=explode("\t",$l_d);
return array($l_d,$ip_a[2].$ip_a[3]);
}
function d_ip($d_ip){
for($i=0; $i<=3; $i++){
$d_ip[$i] = sprintf("%03d", $d_ip[$i]);
}
return $d_ip;
}
$ipfrom=cvipfrom($onlineip);
if(!empty($ipfrom)){ //ipfrom IP来源不为空...禁止访问 显示 FUCK YOU
die("fuck you");
}
?>
[/code]