Strona 1 z 1
[PHP] Licznik
: sob lip 17, 2004 9:27 am
autor: kroma
witam. chcialem zrobic licznik wejsc na strone, z tym ze jezeli ktos by wszedl z danego ip w danym dniu to juz by nei naliczalo jego wejscia, chcialem zrobic tak ze dla kazdego dnia tworzylby sie plik ip_$dzien.txt (bo w bazy danych sie jeszcze nie bawilem) ,pozniej skrypt przeszukiwalby tablice i dodawal lub nie wejscie.
Moj problem: probuje i probuje i nie moge zrobic takiego manewru, ze gdy jest ip w tablicy to ma go nie dopisywac po raz kolejny a tym samym nie sumowac kolejnego wejscia:
[php]<?php
//SPRAWDZANIE IP i TWORZENIE PLIKU IP_$dzien
$ip=$_SERVER["REMOTE_ADDR"];
$dzien=date("d-m");
if (!file_exists("ip_$dzien.txt"))
{
$plik_ip=fopen("ip_$dzien.txt","w");
}
$tablica_ip=array();
$tablica_ip=file("ip_$dzien.txt");
for ($i=0;$i<=count($tablica_ip);$i++)
{
if (!in_array($ip,$tablica_ip))
{
$plik_ip=fopen("ip_$dzien.txt","a+");
fputs($plik_ip,"$ip\r\n");
fclose($plik_ip);
}
}
?>[/php]
z gory dziekuje za jakokolwiek pomoc :]
Re: [PHP] Licznik
: sob lip 17, 2004 5:56 pm
autor: Tombard
mam taki skrypt ale jest strasznie długi i musiał bym go przepisać z książki , ale może ty sam masz taką

nazywa się 101 praktycznych skryptów , oczywiście w PHP .
Re: [PHP] Licznik
: sob lip 17, 2004 11:30 pm
autor: kroma
sęk w tym ze sam robie ten skrypt, nie chce przepisywac bezmyslnie z ksiazki, ucze sie dopiero i chce wszystko zrozumiec

, ktos mi pomoze??
Re: [PHP] Licznik
: ndz lip 18, 2004 8:23 pm
autor: mistrzu
Musisz usunąć znaki końca linii (\r i \n) z tablicy żeby funkcja in_array() zwróciła true. Zastosuj taką pętelke:
[php]<?php
foreach($tablica_ip as $key => $value)
{
$tablica_ip[$key] = trim($tablica_ip[$key]);
}
?>[/php]
Jeszcze jedno: Pętla w linii 13 jest zbędna. Funkcja in_array() automatycznie przekopuje tablice.
Re: [PHP] Licznik
: ndz lip 18, 2004 11:19 pm
autor: kroma
dzieki
mistrzu, teraz mi skrypcik dziala jak ma dzialac, co prawda narazie na *.txt ale od czegos trzeba zaczynac

Re: [PHP] Licznik
: pn lip 19, 2004 7:36 am
autor: kroma
no to jak juz ciagne ten licznik to do konca. chce zrobic zeby wyswietlal odslony, odwiedziny w bierzacym dniu i odwiedziny (suma wszystkich dni). odslony mi dzialaja, odwiedziny tez, ale obawiam sie ze suma tych odwiedzin nie bedzie mi dzialac jak miesiace beda od 10-12
[php]<?php
//SPRAWDZANIE IP i TWORZENIE PLIKU IP_$dzien
$ip=$_SERVER["REMOTE_ADDR"];
$dzien=date("d");
$miesiac=date("m");
if (!file_exists("licznik/ip_$dzien-$miesiac.txt"))
{
$plik_ip=fopen("licznik/ip_$dzien-$miesiac.txt","w");
}
$tablica_ip=array();
$tablica_ip=file("licznik/ip_$dzien-$miesiac.txt");
foreach($tablica_ip as $key => $value)
{
$tablica_ip[$key] = trim($tablica_ip[$key]);
}
if (!in_array($ip,$tablica_ip))
{
$plik_ip=fopen("licznik/ip_$dzien-$miesiac.txt","a");
fputs($plik_ip,"$ip\r\n");
fclose($plik_ip);
}
// TUTAJ NIE WIEM JAK TO ZROBIC BO MISIACE OD 1-9 MAJA PRZED SOBA ZERO, DLATEGO DODALEM 0 PRZED $i (licznik od miesiaca), ALE TO NIE DZIALA W MIESIACACH 10-12 BO POZNIEJ JUZ NIE MA ZERA, JKAK TO ZROBIC? JEST FUKNCJA DATE, KTORA ZWRACA NUMER MIESIACA BEZ ZERA NA POCZATKU ??
for ($j=1;$j<=31;$j++)
{
for($i=1;$i<=12;$i++)
{
if (file_exists("licznik/ip_$j-0$i.txt"))
{
$suma=0;
$tablica_suma=file("licznik/ip_$j-0$i.txt");
$suma=count($tablica_suma);
$calosc=$suma+$calosc;
}
}
}
//ODWIEDZINY TO ILOSC IPEKOW W TABLICY $tablica_ip
$odwiedzin=count($tablica_ip);
//ZLICZANIE ODSLON
if (file_exists("licznik/licznik.txt"))
{
$plik=fopen("licznik/licznik.txt","r");
$ilosc=fgets($plik,1024);
fclose($plik);
} else $ilosc=0;
$ilosc++;
$plik=fopen("licznik/licznik.txt","w");
fputs($plik,"$ilosc");
fclose($plik);
echo ("Ilosc odslon na stronie: <big>$ilosc</big><br>");
echo ("Ilosc odwiedzin dzisiaj: <big>$odwiedzin</big><br>");
echo ("Ilosc wszystkich odwiedzin: <big>$calosc</big>");
?>
</html>
?>[/php]
Re: [PHP] Licznik
: pn lip 19, 2004 10:00 am
autor: viraptor
Albo
albo
Kod: Zaznacz cały
if($i <10) $nazwa="licznik/ip_$j-0$i.txt";
else $nazwa="licznik/ip_$j-$i.txt";
if (file_exists($nazwa))
...
Ale chyba sam przyznasz, ze to pytanie bylo nie na miejscu... skladnie if() chyba znasz, a date() jest opisany na php.net
Re: [PHP] Licznik
: pn lip 19, 2004 4:19 pm
autor: kroma
bylo, teraz tak stwierdzam

, dzieki bardzo za pomoc