php 比较两个ip相同,比较PHP中的IP地址

这是我的代码:

Untitled Document

class visitors

{

static $i;

function __construct()

{

$this->checkIp();

}

function createFile()

{

$fp=fopen("visit.txt","a+");

if($fp)

{

echo "
File created";

return $fp;

}

else

{

echo "File creation Error Check permissions";

exit;

}

}

function fetchIp()

{

$ip=$_SERVER['REMOTE_ADDR'];

//$ip=ip2long($ip);

return $ip;

}

function writeFile()

{

$fp=$this->createFile();

$ip=$this->fetchIp();

//echo $ip;

$space="\r\n";

fwrite($fp,$ip.$space);

//self::$i++;

//echo self::$i;

}

function checkIp()

{

$fp=$this->createFile();

$ip=$this->fetchIp();

while(!feof($fp))

{

$data.=fgets($fp);

}

$uip=explode("\r\n",$data);

foreach($uip as $key)

{

if(strpos($key,$ip)!==0)

{

$this->writeFile();

}

}

}

}

$v=new visitors();

?>

我试图将每个访问者的IP地址存储在一个文本文件中,如果第二次访问他的IP将被写入文本文件中。为了实现这个功能,我读取文件并与当前IP进行比较,如果他们是一样的,它不会调用写函数。问题是一切正常,但文件每次写在换行符相同的IP。比较部分失败。请帮我解决这个问题。保留静态我可变部分。我有评论说如此没有问题,谢谢。

注意:

我已经阅读了An optimized method to compare IP addresses with wildcards in PHP?,并从中获得了strpos的想法。在此之前,我使用了ip2long和long2ip,但也导致了相同的错误。我也读过PHP不支持来自here的无符号整数。这会影响我的比较操作,因为ip地址是一个无符号的32位整数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值