You may at some stage want to filter an online service based on IP address. In other words, you may want to block or grant access to a request based on their IP address. This can be handled in PHP by doing the following.
If you have the IP addresses, then it is trivial.
//First check IP address is valid $request_ip = $_SERVER['REMOTE_ADDR']; if ( !preg_match( "/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/", $request_ip ) ) return false; $blacklist = array( '111.222.12.11', '222.111.21.22', '221.112.11.12' ); //check that ip is not blacklisted if ( in_array( $request_ip, $blacklist ) ) return false;
If you want to include a range of IP addresses, best to use a regular expression.
$blacklist_ip_range = array( '/^122\.244\.(\d+)\.(\d+)/', //for IP address in the range 122.244.0.0 - 122.244.255.255 '/^123\.(\d+)\.(\d+)\.(\d+)/', //for IP address in the range 123.0.0.0 - 123.255.255.255 ); foreach( $blacklist_ip_range as $ip ) { if( preg_match( $ip, $request_ip ) ) return false; }
If you have a better solution, then please let me know.
use ip2long function to compare IPs