Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 59 Pomógł: 0 Dołączył: 26.02.2004 Ostrzeżenie: (0%)
|
Witam,
Jestem w zasadzie "nowy w php". Stworzyłem skrypt w php - licznik odwiedzin - niestety nie działa prawidłowo. Ma być odporny na odświeżanie (zapis czasu na IP odwiedzającego). [php:1:e01299dbba]<?php $nabij = FALSE; $ip=$_SERVER['REMOTE_ADDR']; $czas_teraz=date('U'); $plik_l="licznik_gl.in"; $plik_g="licznik.in"; $plik_l_tab=file($plik_l); for ($i=0; $i< count($plik_l_tab); $i++) { $linia=explode("|&&|", $plik_l_tab[$i]); if ($linia[0]==$ip) $czas_roznica= ($czas_teraz)-($linia[1]); $czas_nabijaj= "3600"; if ($czas_roznica <= $czas_nabijaj) { $wpis_po="$ip.'|&&|'.$czas_teraz.'|&&|'n"; $plik=file_get_contents($plik_l); $plik=str_replace($plik[$i],$wpis_po,$plik); $odczyt=fopen($plik_l,"w"); flock($odczyt,LOCK_EX); fputs($odczyt,$plik); flock($odczyt,LOCK_UN); fclose($odczyt); $plik=fopen($plik_g,"r"); $ile=fgets($plik,80); $ile++; fclose($plik); $plik=fopen($plik_g,"w"); flock($plik,LOCK_EX); fputs($plik,$ile); flock($plik,LOCK_UN); fclose($plik); $nabij=TRUE; } } if (!$nabij) { $odczyt=fopen($plik_l,"a"); flock($odczyt,LOCK_EX); fputs($odczyt,"$ip|&&|$czas_teraz|&&|n"); flock($odczyt,LOCK_UN); fclose($odczyt); $plik=fopen($plik_g,"r"); $ile=fgets($plik,80); $ile++; fclose($plik); $plik=fopen($plik_g,"w"); flock($plik,LOCK_EX); fputs($plik,$ile); flock($plik,LOCK_UN); fclose($plik); } ?>[/php:1:e01299dbba] Założenia: Jeden plik służy do zapis numeru IP i czasu $plik_l="licznik_gl.in" a drugi do ilości odwiedzin. $plik_g="licznik.in"; jeżeli nie ma zapisu numeru IP dopisuje do pliku numer IP i czas jeżeli czas IP jest równy lub większy od czasu zadeklarowanego "3600" to ma zostac zmieniony czas dla konkretnego IP na czas bieżący i zwiększony licznik o 1. Jezeli czas jest mniejszy to ma zostać zminiony tylko czas na czas bieżący Problem Niestety nie mam pojęcia gdzie robie błąd w skrypcie. Może ktoś mi pomoże go rozwiązać. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 29.11.2003 Ostrzeżenie: (0%)
|
oto w nowej odpowiedzi umieszczam kod dwóch plików.
1. plik licz.php - glowny plik skryptu [php:1:00afeadd0d]<?php ########################### ##Autor:iggi############### ##Mail:iggi@kgb.pl######### ##gg:2077194############### ########################### ## KONFIKURACJA ## MOŻNA EDYTOWAĆ ## $plik_licznika = "licznik.in"; //liczba typa $plik_ip = "ip.in"; //dane o IP i godzinie $czas_blokady=3600; //w sekundach ## KONFIGURACJA DALSZA ## NIE EDYTOWAĆ ## $now = date("U"); $block = $now+$czas_blokady; $ip=getenv("REMOTE_ADDR"); $ajpi=file("$plik_ip"); include("functions.php"); ## FUNKCJE WYKONYWALNE ## if(checkip($ip, $plik_licznika, $plik_ip, $now, $block, $ajpi)==1) { } else { addguest($plik_licznika); adduser($ip, $plik_ip, $block); } ## WYPISUJE LICZBĘ TYPA ## readfile("$plik_licznika"); ?>[/php:1:00afeadd0d] 2. plik functions.php - funkcje potrzebne do dzialania skryptu [php:1:00afeadd0d]<?php // dodaj gościa function addguest($plik) { $fp = fopen($plik, "r+"); $count = fgets($fp, 10); $count ++; fseek($fp, 0); fwrite($fp, $count, 10); fclose($fp); } //uaktualnij usera function updateuser($ip, $plik) { $zmiennik = "$ip|$now"; str_replace($ajpi[$i],$zmiennik,$plik, $new); } //dodaj usera function adduser($ip, $plik1, $block) { $fp = fopen($plik1, "r+"); fputs($fp, "$ip|$blockn"); fclose($fp); } function checkip($ip, $plik, $plik1, $now, $block, $ajpi) { for($i=0 ; $i < count($ajpi) ; $i++) { $a = split("[|]", $ajpi[$i]); if(eregi($ip, $ajpi[$i])) { if($a[1] <= $now) { addguest($plik_licznika); updateuser($ip, $plik_ip, $now); $r=1; } else { $r=1; } } else { $r=0; } } return($r); } ?> [/php:1:00afeadd0d] dodatkowo sa jeszcze 2 pliki: -licznika.in - liczba gosci -ip.in - IP odwiedzajcych. w celu wyswietlenia zawartosci nalezy zaincludowac plik licz.php (on wyswietla (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) gdydby gtos czegos nie kapowal to zapraszam na gg:2077194 lub tlen: ig_gi dzieki temu skryptowi sprawdzilem siebie:P |
|
|
|
xmarko Licznik - cos nie tak w skrypcie (oparty na plikach) 4.03.2004, 13:52:00
iggi mysle, ze skrypt na licznik z blokada bedzie duzo ... 5.03.2004, 17:39:09
xmarko ja jednak nie chce licznika opartego na ciasteczka... 5.03.2004, 20:33:26
iggi nie wiem co moze byc zle ale zaraz sprawdze i ci o... 5.03.2004, 21:20:13
xmarko Trochę powalczyłemze skryptem i oto wynik. Może kt... 8.03.2004, 13:29:27 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 06:48 |