The school's news system requires some news only to open the campus IP browsing, so rewrite a code to implement this function, the result is, as long as the IP access allowed to be included in the Ip.txt this file, while supporting the C-class IP, for example:
Ip.txt
192.168
211.67.188
211.67.191.25
The code is as follows:
Copy Code code as follows:
/*
* IP address blacklist, whitelist
* Determine whether the IP of the guest address is in Ip.txt and support the C class IP
* by Xhat
*/
$ip = $_server[' remote_addr '];
$ipArray = Preg_replace ("#rn? | n# "," ", File (' Ip.txt '));
foreach ($ipArray as $ipTest) {
if (Substr_count ($ip, $ipTest)!= "0") {
echo "OK"; Execute related commands
Die ();
}
}
?>
You can use code to cheat the above, the following code to upgrade
Copy Code code as follows:
<?php
Class Block_ip {
var $Block _ip = Array ("192.168.1.1", "210.10.2.1-20", "222.34.4.*");
function __construct () {
}
function __destruct () {
}
Private Function Makepregip ($STR) {
if (Strstr ($str, "-")) {
$aIP = Explode (".", $str);
foreach ($aIP as $k => $v) {
if (!strstr ($v, "-")) {
$preg _limit. = Makepregip ($v);
} else{
$aipNum = Explode ("-", $v);
for ($i = $aipNum [0]; $i <= $aipNum [1]; $i + +) {
$preg. = $preg? "|". $i: "[". $i;
}
$preg _limit =strrpos ($preg _limit, ".", 1) = = (strlen ($preg _limit)-1)? $preg. "]": ".". $preg. "]";
}
}
}else{
$preg _limit. = $str. ".";
}
return $preg _limit;
}
Private Function Getallblockip () {
if ($this->block_ip) {
foreach ($this->block_ip as $k => $v) {
$ipaddres = $this->makepregip ($v->start_ip);
$ip = Str_ireplace (".", ".", $ipaddres);
$ip = Str_replace ("*", "[0-9]{1,3}", $ip);
$ipaddres = "/". $ip. " /";
$ip _list[] = $ipaddres;
}
}
return $IP _list;
}
Public Function Checkip () {
$iptable = $this->getallblockip ();
$IsJoined = true;
Get User IP
$Ip = $this->get_client_ip ();
$Ip = Trim ($Ip);
Remove the IP section from the Blacklist
if ($iptable) {
foreach ($iptable as $value) {
if (Preg_match ("{$value}", $Ip)) {
$IsJoined = false;
Break
}
}
}
If you do the following in the IP blacklist
if (! $IsJoined) {
echo "IP Error";
Exit
}
}
Private Function Get_client_ip () {
if (getenv ("Http_client_ip") && strcasecmp (getenv ("Http_client_ip"), "Unknown")
$ip = getenv ("Http_client_ip");
else if (getenv ("Http_x_forwarded_for") && strcasecmp (getenv ("Http_x_forwarded_for"), "Unknown")
$ip = getenv ("Http_x_forwarded_for");
else if (getenv ("REMOTE_ADDR") && strcasecmp (getenv ("REMOTE_ADDR"), "Unknown")
$ip = getenv ("REMOTE_ADDR");
else if (isset ($_server[' remote_addr ']) && $_server[' remote_addr '] && strcasecmp ($_server[' Remote_ ADDR '], "unknown")
$ip = $_server[' remote_addr '];
Else
$ip = "Unknown";
return ($IP);
}
}
?>
Reference fragment:
Copy Code code as follows:
$oBlock _ip = new Block_ip ();
$oBlock _ip->checkip ();