得到本页最后浏览者的IP(viewer_ip),记录在数据库中.
当有下一个浏览者时,如果获得的IP与数据库中的相同,计数器(counter)不加,数据库中IP不变.
相反,如果获得的IP与数据库中的不同,计数器(counter)加1,数据库中IP替换为当前浏览者IP.
通过这种方法可以防止同一IP不同刷新!

解决方案 »

  1.   

    谢谢你的回复,现在我的这个程序是只要库里有的IP,就不让增长,如果库
    里没有,就只让增长一次,但是实际上运行时却不管库中有否记录,计数器均
    增长,我是个刚学PHP的菜niao,怎么也看不出哪的问题,请哪位麻烦指点一下?
    <?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;
      $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?>
      

  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)
    改为  if ($REMOTE_ADDR==$user_ip[$i])