>  기사  >  백엔드 개발  >  文本数据库记录IP,如果IP已存在就不添加,没有就记录到文本数据中,调试总出错,高手

文本数据库记录IP,如果IP已存在就不添加,没有就记录到文本数据中,调试总出错,高手

WBOY
WBOY원래의
2016-06-13 13:11:33857검색

文本数据库记录IP,如果IP已存在就不添加,没有就记录到文本数据中,调试总出错,求助高手
文件一:

 $now_time=time();//当前时间
$ipfile="./images/ip.txt";//文本数据存放文件
 $old=file($ipfile);  
 $num=count($old);  
 for ($i=0;$i  list($txtusre,$txtzzip,$txttime)=explode("|",$old[$i]); 
 if($txtzzip=="$REMOTE_ADDR"){//比较访客IP文本数据中是否已存在
//已存在就跳过不记录


}else{

//不存在就记录
if (get_magic_quotes_gpc()) {
 if (!$fp = fopen($ipfile, "a+")) {
  die("创建文件失败, 请检查是否有权限.");
 }
 $line = $now_time."|".$REMOTE_ADDR."|".$now_time."\r\n";
 $old=file($ipfile);
 $num=count($old);
 $fp=fopen($ipfile, "w");
 flock($fp,2);
 if($num  fputs($fp,$line);
 for ($i=0;$i  fputs($fp,$old[$i]);
 }}else{
 fputs($fp,$line);
 for($i=0;$i  fputs($fp,$old[$i]);
 }}
 fclose($fp);
}}}
?>


文本数据文件ip.txt:
1348308290|127.0.0.1|1348308290
1348308289|127.0.0.1|1348308289
1348308275|127.0.0.2|1348308275


当只有一条记录时,能判断IP已存在,继续添加不存在的IP

当有二条记录时,判断已存在IP就失效了,刷新一次就记录一次重复IP


想要效果是:当访客的IP数据文件中不存中就添加一条,如存在,就不添加


请高手帮修正,谢谢


------解决方案--------------------
$REMOTE_ADDR这个变量的值需要你自己获取.
$now_time=time();//这一行可以删掉不要了.
------解决方案--------------------

PHP code
$ip = $_SERVER['REMOTE_ADDR'];
$time = time();
$ipfile = "./images/ip.txt";
$s = file_get_contents($ipfile);
if(strstr($s, "|$ip|")) return; //存在就结束
$ar = preg_split("/[\r\n]+/", $s); //切割成数组
$ar = array_slice($ar, 0, 99); //取前99项
$ar[] = "$time|$ip|$time"; //添加新数据
file_put_contents($ipfile, join(PHP_EOL, $ar)); //回写文件 <div class="clear">
                 
              
              
        
            </div>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.