Stranice: [1]   Idi dole
  Štampaj  
Autor Tema: Gde je greska?  (Pročitano 1937 puta)
Bosko
Gost
« poslato: Utorak, 24. Jul 2001. 15:05:00 »

U fajlu counter_ip.dat imam zapisane IP adrese dosadasnjih posetilaca sajta (u svakom redu po jednu adresu). Ovaj test kod sam napravio da bih proverio da li je korisnik vec posetio sajt, pa u $buffer ucitavam adrese iz fajla i uporedjujem ih sa $REMOTE_ADDR. U svakom slucaju dobijam izlaz kako se kod izvrsavao vise od 30 sec i kako je zato prekinut. Gde sam pogresio? Hvala unapred.

$file=fopen("counter_ip.dat","r");
while (!feof ($file)) {
    $buffer = "";
    $slovo = fgetc($file);
    while ($slovo != "n"){
      $buffer.=$slovo;
      $slovo = fgetc($file);
    }
    if ($buffer == $REMOTE_ADDR){
      echo "Vec ste bili ovde
";
    }else{
      echo "Prvi put ste ovde
$REMOTE_ADDR
";
    }
    echo "$buffer
";
}
fclose ($file);
Sačuvana
mire
Gost
« Odgovor #1 poslato: Sreda, 25. Jul 2001. 08:18:00 »

Umesto

while ($slovo != "n"){

stavi:

while ( ($slovo != "n") and (!feof($file)) ) {
Sačuvana
Mladen Jablanovic
Gost
« Odgovor #2 poslato: Sreda, 25. Jul 2001. 08:58:00 »

Prvo, ne bi trebalo da radis slovo po slovo kad imas fgets za citanje linije. Skripta ti se glavi u unutrasnjoj while petlji jer naleti na kraj fajla, a ne naleti na n, na sta ispitujes. Dakle, umesto cele za*ebancije sa fgetc koristi fgets.
Sačuvana
legend
Gost
« Odgovor #3 poslato: Ponedeljak, 06. Avgust 2001. 11:26:00 »

Osim toga, sama logika provere da li je neko bio ili ne nije dobra. Ako radis po IP-ovima, razmisli sta ces sa ljudima iza maskarade kao i sa dialup korisnicima (dinamicki IP-ovi), cable modem korisnicima sa DHCP adresama i jos 100 kila drugih dinamickih cudesa.

Prica koju sam delimicno ispratio na jednoj listi je sledeca: pamtis IP/masku (gledas po klasama, dakle ne pravi CDIR subnetovi nego generalne klase) + browser + ident (ako ima) + cookie (u koji postavis neki ID, veliki do bola) + Forward-For: (ako ide preko proxyja) i tako neke stvari.

Mislim da je cela sema (koja manje vise radi) razradjena u onom "BB - A Counter on steroids" projektu u PHP-u. Ako ne tu, pitaj majstora koji radi linux.com kako je izveo isto to za polling sistem, pa ces videti kako izgleda.

Ako ovo provalis do kraja, napisi klasu u PHP-u koja to radi, pa javi posto je stvar manje vise interesantna.

Aj ziv bio Smiley
Sačuvana
Stranice: [1]   Idi gore
  Štampaj  
 
Prebaci se na:  

?>