小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

php判斷ip黑名單代碼

 xf_baby 2014-03-03
php判斷ip黑名單程序代碼實(shí)例。
學(xué)校的新聞系統(tǒng)要求有些新聞只開放校內(nèi)ip瀏覽,于是重寫了一個(gè)代碼來實(shí)現(xiàn)此功能,實(shí)現(xiàn)后的結(jié)果是,只要把允許訪問的ip列入ip.txt這個(gè)文件中即可,同時(shí)支持c類ip,例如:
ip.txt
192.168
211.67.188
211.67.191.25
代碼如下:
/* 
  1. * ip地址黑名單、白名單 
  2. * 判斷訪客地址的ip是否在ip.txt中,支持c類ip 
  3. * By xhat 
  4. */  
  5. $ip = $_SERVER['REMOTE_ADDR'];  
  6. $ipArray = preg_replace("#rn?|n#","",file('ip.txt'));  
  7. foreach ($ipArray as $ipTest) {  
  8. if (substr_count($ip$ipTest) != "0") {  
  9. echo "ok"//執(zhí)行相關(guān)命令  
  10. die();  
  11. }  
  12. }  
  13. ?>  
下面代碼進(jìn)行升級(jí)
<?php   
  1. class block_ip {   
  2. var $Block_ip = array("192.168.1.1","210.10.2.1-20","222.34.4.*");   
  3. function __construct(){   
  4. }   
  5. function __destruct(){   
  6. }   
  7. private function makePregIP($str){   
  8. if (strstr($str,"-")) {   
  9. $aIP = explode(".",$str);   
  10. foreach ($aIP as $k=>$v) {   
  11. if (!strstr($v,"-")) {   
  12. $preg_limit .= makePregIP($v);   
  13. else{   
  14. $aipNum = explode("-",$v);   
  15. for($i=$aipNum[0];$i<=$aipNum[1];$i++){   
  16. $preg .=$preg"|".$i:"[".$i;   
  17. }   
  18. $preg_limit .=strrpos($preg_limit,".",1)==(strlen($preg_limit)-1)?$preg."]":".".$preg."]";   
  19. }   
  20. }   
  21. }else{   
  22. $preg_limit .= $str.".";   
  23. }   
  24. return $preg_limit;   
  25. }   
  26. private function getAllBlockIP(){   
  27. if ($this->Block_ip) {   
  28. foreach ($this->Block_ip as $k=>$v) {   
  29. $ipaddres = $this->makePregIP($v->start_ip);   
  30. $ip = str_ireplace(".",".",$ipaddres);   
  31. $ip = str_replace("*","[0-9]{1,3}",$ip);   
  32. $ipaddres = "/".$ip."/";   
  33. $ip_list[] = $ipaddres;   
  34. }   
  35. }   
  36. return $ip_list;   
  37. }   
  38. public function checkIP() {   
  39. $iptable = $this->getAllBlockIP();   
  40. $IsJoined = true;   
  41. //取得用戶ip   
  42. $Ip = $this->get_client_ip();   
  43. $Ip = trim($Ip);   
  44. //剔除黑名單中的IP區(qū)段   
  45. if ($iptable) {   
  46. foreach($iptable as $value) {   
  47. if (preg_match("{$value}",$Ip)) {   
  48. $IsJoined = false;   
  49. break;   
  50. }   
  51. }   
  52. }   
  53. // 如果在ip黑名單中就執(zhí)行如下操作   
  54. if( !$IsJoined ){   
  55. echo "IP Error";   
  56. exit;   
  57. // by www.jbxue.com  
  58. }   
  59. private function get_client_ip(){   
  60. if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))   
  61. $ip = getenv("HTTP_CLIENT_IP");   
  62. else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))   
  63. $ip = getenv("HTTP_X_FORWARDED_FOR");   
  64. else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))   
  65. $ip = getenv("REMOTE_ADDR");   
  66. else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))   
  67. $ip = $_SERVER['REMOTE_ADDR'];   
  68. else   
  69. $ip = "unknown";   
  70. return($ip);   
  71. }   
  72. }   
  73. ?>  
引用片段:
$oBlock_ip = new block_ip();   
  1. $oBlock_ip->checkIP();  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多