Jump to content
php.lv forumi

kaa counteram atsleegt refreshu


ainars

Recommended Posts

Kā izlabot scriptu, lai neņemvērā refreshu??? Citadi refreshojot lapu skaitās cipari uz priekšu..... nevar noteikt patieso apmekletāju skaitu :(

 

<?php
class acounter {

   var $config = array();

   function acounter () {

       /* URL to the digitset */
       $this->config['img'] = "http://sitkana.eclub.lv/*/";

       /* URL to the animated digitset */
       $this->config['animated_img'] = "http://sitkana.eclub.lv/*/";

       /* How many digits to show */
       $this->config['pad'] = 6;

       /* digit width and height */
       $this->config['width']  = 16;
       $this->config['height'] = 22;

       /* ip blocking (true/false) */
       $this->config['block_ip'] = false;

       /* path to ip logfiles */
       $this->config['logfile'] = "count/ip.txt";

       /* timeout (minutes) */
       $this->config['block_time'] = 15;
   }

   function is_new_visitor() {
       $is_new = true;
       $rows = @file($this->config['logfile']);
       $this_time = time();
       $ip = getenv("REMOTE_ADDR");
       $reload_dat = fopen($this->config['logfile'],"wb");
       flock($reload_dat, 2);
       for ($i=0; $i<sizeof($rows); $i++) {
           list($time_stamp,$ip_addr) = split("\|",$rows[$i]);
           if ($this_time < ($time_stamp+$this->config['block_time'])) {
               if (chop($ip_addr) == $ip) {
                   $is_new = false;
               } else {
                   fwrite($reload_dat,"$time_stamp|$ip_addr");
               }
           }
       }
       fwrite($reload_dat,"$this_time|$ip\n");
       flock($reload_dat, 3);
       fclose($reload_dat);
       return $is_new;
   }

   function read_counter_file($page) {
       $update = false;
       if (!file_exists("count/pages/$page.txt")) {
           $count_dat = fopen("count/pages/$page.txt","w+");
           $this->counter = 1;
           fwrite($count_dat,$this->counter);
           fclose($count_dat);
       } else {
           $fp = fopen("count/pages/$page.txt", "r+");
           flock($fp, 2);
           $this->counter = fgets($fp, 4096);
           flock($fp, 3);
           fclose($fp);
           if ($this->config['block_ip']) {
               if ($this->is_new_visitor()) {
                   $this->counter++;
                   $update = true;
               }
           } else {
               $this->counter++;
               $update = true;
           }
           if ($update) {
               $fp = fopen("count/pages/$page.txt", "r+");
               flock($fp, 2);
               rewind($fp);
               fwrite($fp, $this->counter);
               flock($fp, 3);
               fclose($fp);
           }
       }
       return $this->counter;
   }

   function create_output($page='') {
       if (empty($page)) {
           $page = "counter";
       }
       $this->read_counter_file($page);
       $this->counter = sprintf("%0"."".$this->config['pad'].""."d",$this->counter);
       $ani_digits = sprintf("%0"."".$this->config['pad'].""."d",$this->counter+1);
       $html_output = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr align=\"center\">\n";
       for ($i=0; $i<strlen($this->counter); $i++) {
           if (substr("$this->counter",$i,1) == substr("$ani_digits",$i,1)) {
               $digit_pos = substr("$this->counter",$i,1);
               $html_output .= "<td><img src=\"".$this->config['img']."$digit_pos.gif\"";
           } else {
               $digit_pos = substr("$ani_digits",$i,1);
               $html_output .= "<td><img src=\"".$this->config['animated_img']."$digit_pos.gif\"";
           }
           $html_output .= " width=\"".$this->config['width']."\" height=\"".$this->config['height']."\"></td>\n";
       }
       $html_output .= "</tr></table>\n";
       return $html_output;
   }

}

?>

Kā to dabūt gatavu???? :unsure:

Edited by ainars
Link to comment
Share on other sites

kā tev pašam liekas kā var noteikt vai cilvēks taisa refrešu vai ievada urli ar roku? varbuut pasties kautko par kuukijiem vai sesijaam, gan jau dziivee noderees.

Jā bet var jau uztaisīt, ja cilvēks no viena IP atrodas lapā un protams jau ir pieskaitīts, tad no šī IP personu neskaita klāt piem 30min[gadījuma, ja lapu refresho]!

Vislabakais jau ir uztaisiit, lai visiem IP, kuri ir pieskaitīti netiek par jaunu skaitīti noteiktu laika intervālu..

 

bet šeit bez papildus IP lista neiztikt!!!

Link to comment
Share on other sites

×
×
  • Create New...