使用PHP阻止多个IP地址
有时有必要根据用户的IP地址来阻止他们访问您的网站。PHP可以使用$_SERVER超全局变量和参数REMOTE_ADDR来检测用户的IP地址。
该代码包括两种加载IP地址列表的方法。第一种是通过将其硬编码为数组,第二种是使用称为“blocked_ips.txt”的纯文本文件。该文件的格式只是IP地址列表,每行一个地址。通过使用此file()功能,此文件将作为数组加载到地址中。
if ( !file_exists('blocked_ips.txt') ) { $deny_ips = array( '127.0.0.1', '192.168.1.1', '83.76.27.9', '192.168.1.163' ); } else { $deny_ips = file('blocked_ips.txt'); } //读取用户ip地址: $ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : ''; //在$deny_ips数组中搜索当前IP if ( (array_search($ip, $deny_ips))!== FALSE ) { //地址被阻止: echo 'Your IP adress ('.$ip.') was blocked!'; exit; }
使用此方法时应注意两件事。
首先是用户的IP地址可能会由于多种因素而发生变化。他们可以搬到其他建筑物,或者ISP可以为他们分配不同的IP地址。
要注意的第二件事是,输入IP地址时应小心,以免阻止搜索引擎蜘蛛查看您的站点。他们只会索引短语“您的IP地址(0.0.0.0)被阻止!”,而不是搜寻您的内容。