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 8) , 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 :D

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

Kod: Zaznacz cały

$miesiace=date('n');
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 :roll: , dzieki bardzo za pomoc