//因为需要,数据库中记录了完整的IP,如218.64.81.38,183.59.40.203等
$q25="select * from member where";//数据库中有若干条数据
$r25=$obj_db->simplequery($q25);
$tx_list25="";
while ($a25=$obj_db->fetchrow($r25,DB_FETCHMODE_ASSOC))
{
$a25ip=explode(".",$a25[ip]);
$arr25ip="$a25ip[0].$a25ip[1]";//取IP前二位
$tx_list25.="$arr25ip,";
}
$tx_list25=substr($tx_list25,0,-1);
$bhei = array("$tx_list25");//数据库中的IP前二段
$new_array = array(127.0,192.168);//比对数据库中IP的前二段是否与这二个IP段相同
$sj=0;
foreach($new_array as $item)
{
if(in_array($item,$bhei))
{
$sj=1;
break;
}}
echo "$sj";//$sj=1,有相同的IP段,$sj=0,没有相同的IP段
=======================
请高手帮忙修正错误,或者用更简洁的代码达到效果,谢谢!
谢谢你的回复,但我就是要与mysql表中的所有数据比对。
要单独比对某个IP我这个代码已实现了:
$bhei = array("127.0");//数据库中的IP前二段
$new_array = array(127.0,192.168);//比对数据库中IP的前二段是否与这二个IP段相同
$sj=0;
foreach($new_array as $item)
{
if(in_array($item,$bhei))
{
$sj=1;
break;
}}
还没明白你的目的,我猜是下面中的一种:
1. 要比对表中是否存在前半段为特定ip段(如127.0)的数据
2. 比对表中所有ip数据,看是否存在前半段相同的ip
数据库member:
id ip
1 110.251.123.139
2 120.7.251.196
3 183.67.34.189
……
因为需要,数据库中必须记录了完整的IP
但现在要取表中IP段前二位与现有黑名单IP的前二段比对是否相同
一定要写这么完整么?
$your_db_ips是你从数据库里查询得到的所有ip
$blacklist_ips是你的黑名单ip列表
不会呀,麻烦帮直接写出代码,谢谢!
取数据库中所有每条记录的IP的前二位,与固定的某IP(如127.0或192.168)比对,有相同的返回一个结果,没相同的返回一个结果。
唉/......................................楼下有人写了代码了,你还问人家要全部的对比...人家明明就是帮你写成方法了....
方法的最大特点就是重用...
你把你数据库要对比的表,用循环调用这方法就可以完成这个对比了....
问题是不对啊