list($user_ip)=mysql_fetch_array($ip);
........
$var=0;
 for($i=1;$i<=mysql_num_rows($ip);$i++)
{
  if ($REMOTE_ADDR==$user_ip)
   {
     global $var;
     $var++;
   }
}
 改為........
global $var;
while(list($user_ip)=mysql_fetch_row($ip))
{
  if ($REMOTE_ADDR==$user_ip)
   {
     $var++;
   }
}
 試一試

解决方案 »

  1.   

    如果ip列表里面没有对方的ip,计数器加1,但同时应该把该ip加入到数据库的列表中,但上面的代码里面没有这个操作。
      

  2.   

    <?php
    $counterFile ="counter/counter.txt";//记录访问人数的文本文件;
    $link=mysql_connect("localhost","root","xin*123");
    mysql_select_db("tracker",$link);
    $show="select user_ip from detail";
    $ip=mysql_query($show,$link);
    list($user_ip)=mysql_fetch_array($ip);
    function displayCounter($counterFile)
      {
      $fp     = fopen($counterFile,"rw");
      $num    = fgets($fp,69);
      $num    += 1;
      $strnum=strval($num);//chang to string
      $strnum=chop($strnum);//delete space
      $numlen=strlen($strnum);
       for($i=1;$i<=$numlen;$i++)
         {
           $numm[$i]=substr("$strnum",$i-1,1);
           echo "<img src=counter/".$numm[$i].".jpg border=0>";//显示数字图片
         }
        exec( "rm -rf $counterFile");
         exec( "echo $num > $counterFile");
         if (!file_exists($counterFile))
             {
               exec( "echo 0 > $counterFile");
             }
      }
    $var=0;
     for($i=1;$i<=mysql_num_rows($ip);$i++)
    {
      if ($REMOTE_ADDR==$user_ip)
       {
         global $var;
         $var++;
       }
    }
     if($var>0)
          { $fp     = fopen($counterFile,"r");
      $num    = fgets($fp,69);
      //$num    += 1; 
      //将上一行删除,此行是根据$var>0,则库中已有此IP,则$num不应再计数
      $strnum=strval($num);//chang to string
      $strnum=chop($strnum);//delete space
      $numlen=strlen($strnum);
           for($i=1;$i<=$numlen;$i++)
            {
             $numm[$i]=substr("$strnum",$i-1,1);
             echo "<img src=counter/".$numm[$i].".jpg border=0>";
             }
           }
    else {
      displayCounter($counterFile);
         }
    php?>
      

  3.   

    $var=0;
     for($i=1;$i<=mysql_num_rows($ip);$i++)
    {
      if ($REMOTE_ADDR==$user_ip)
       {
         global $var;
         $var++;
       **********************
    此处
      if ($REMOTE_ADDR==$user_ip)
      

  4.   

    $var=0;
     for($i=1;$i<=mysql_num_rows($ip);$i++)
    {
      if ($REMOTE_ADDR==$user_ip)
       {
         global $var;
         $var++;
       **********************
    此处
      if ($REMOTE_ADDR==$user_ip)
      

  5.   

    其实有一种方法还要使用一些,就是使用cookie,并且将cookie的时间设为无限,用户执行时,将一个标记存在用户机器里,这样,每次用户执行某一个页面的时候,程序检测是否该用户已经被设置了该标记,如果有,则不计入统计,否则加1,这样还可以避免检测用户刷新的情况。当然,如果用户关闭了cookie功能,就不ok了