[PHP][Problem] Skrypt licznika

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
MariAnek
Posty: 11
Rejestracja: ndz paź 23, 2005 7:35 pm
Lokalizacja: Warszawa
Kontakt:

[PHP][Problem] Skrypt licznika

Post autor: MariAnek »

[php]<?php
[$plik = "licznik.dat";
fopen($plik, "r+");
$odwiedziny=fgets($plik, 10);
$odwiedziny += 1;
fseek($plik, 0);
fwrite($plik, $odwiedziny, 10);
fclose($plik);
$odw = strval($odwiedziny);
$cyfry = strlen($odwiedziny)-1;
$i = 0;
echo"Odwiedzin:";
do{
echo"<IMG SRC=\"$odw[$i].gif\">";
$i++;
}while($i<=$cyfry);
?>[/php]

mam cyfry pokolei w formacie gif i mam plik o nazwie licznik.dat
scieżke dostępu mam dla pliku licznik data chmud 770
a w dalszym ciagu nie działa mam informacje:
Warning: Supplied argument is not a valid File-Handle resource in /var/www/marianek/index.php on line tu dla linii 4 ,5,6 i 7
Obrazek cyfra:1 mi sie wyświetla :-)
W czym problem?
A może, ktoś ma licznik ,który zlicz cooki wejścia i ponownie zaliczy cooki pojakims czasie np. po 15min?
Teraz mam licznik co zlicza automatycznie wszystkie odswierzenia i przejscia na podstrony :-(
v0lrath
Posty: 13
Rejestracja: śr gru 07, 2005 10:55 pm
Kontakt:

Re: [PHP][Problem] Skrypt licznika

Post autor: v0lrath »

Ja zrobiłem sobie taki licznik:

[php]<?php

$plik = fopen("licznik.log", "r");
if($myFile)
{
$linia = fgets($plik,filesize("licznik.log")+2);
$licznik=$linia;
fclose($plik);
}

if (!(isset ($timer)))
{
setcookie("timer", time (), time()+2*3600);
$licznik=$licznik+1;
$plik=fopen("licznik.log","w");
fwrite($plik, $licznik);
fclose($plik);
}
else
{
setcookie("timer", time (), time()+2*3600);
}

...

$dlugosc=strlen($licznik);
for ($i=0;$i<$dlugosc;$i++)
{
$zn=substr($licznik,$i,1);
echo("<img src=\"z/c$zn.gif\" border=0 name=\"licz$i\" alt=\"$zn\">");
}

...

?>[/php]

Sprawdź czy masz dobrze ustawione prawa dostępu do pliku i czy on istnieje.
Bo jak nie istnieje i nie ma nadanych praw do zapisu, to skrypt (ani Twój ani mój) nie zadziała. Powinien mieć prawa ustawione na 666 (chmod 666).
To znaczy Twój zadziała i napisze 1 oraz wywali powyższe warningi.
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: [PHP][Problem] Skrypt licznika

Post autor: Stig »

MariAnek pisze:a w dalszym ciagu nie działa mam informacje:
Warning: Supplied argument is not a valid File-Handle resource in /var/www/marianek/index.php on line tu dla linii 4 ,5,6 i 7
Obrazek cyfra:1 mi sie wyświetla :-)
W czym problem?
Funkcja fopen() musi być przekazywana jako wartość zmiennej (uchwytu), o czym mówi manual.
Ostatnio zmieniony czw gru 15, 2005 11:01 pm przez Stig, łącznie zmieniany 1 raz.
MariAnek
Posty: 11
Rejestracja: ndz paź 23, 2005 7:35 pm
Lokalizacja: Warszawa
Kontakt:

Re: [PHP][Problem] Skrypt licznika

Post autor: MariAnek »

Stig pisze: Funkcja file() musi być przekazywana jako wartość zmiennej (uchwytu), o czym mówi manual.
w tym skrypcie nie ma funkcji file() a bład wyskakuje w 4 linijce
$odwiedziny=fgets($plik, 10);
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: [PHP][Problem] Skrypt licznika

Post autor: Stig »

Faktycznie, funkcji file() w tym skrypcie nie ma. Oczywiście miałem na myśli funkcję fopen() - zauważ nawet, że link do manuala podany przeze mnie odnosił się własnie do tej funkcji. Treść swojego posta poprawiłem.
MariAnek
Posty: 11
Rejestracja: ndz paź 23, 2005 7:35 pm
Lokalizacja: Warszawa
Kontakt:

Re: [PHP][Problem] Skrypt licznika

Post autor: MariAnek »

tak ale co jest złego w tym skrypcie
jest przecież odnosnik do pliku i jest parametr r+ który ma zapisywac
a kazdy licznik który mi się uruchomi nie jest odporny na odswiezanie
liczniki wklejam na stronie index.php
w div-ie
a bład wyskakuje 4 linijki
byłem na proponowanej stronie ale w dalszym ciagu nic nie rozumiem
jak wejdziesz na ma stronke to zobaczyż ze licznik dziala za kazdym otwarciem podstrony która jest inkludowana na strone index jak to zablokować
pomocy :lol:
v0lrath
Posty: 13
Rejestracja: śr gru 07, 2005 10:55 pm
Kontakt:

Re: [PHP][Problem] Skrypt licznika

Post autor: v0lrath »

Nie zauważyłem tego, ale teraz już widzę.

A więc masz:

[php]
<?php

$plik = "licznik.dat";
fopen($plik, "r+");
$odwiedziny=fgets($plik, 10);

...

?>[/php]

A powinno być:

[php]
<?php

$nazwa_pliku = "licznik.dat";
$plik=fopen($nazwa_pliku,, "r+");
$odwiedziny=fgets($plik, 10);

...

?>[/php]
Ostatnio zmieniony pt gru 16, 2005 1:04 pm przez v0lrath, łącznie zmieniany 1 raz.
MariAnek
Posty: 11
Rejestracja: ndz paź 23, 2005 7:35 pm
Lokalizacja: Warszawa
Kontakt:

Re: [PHP][Problem] Skrypt licznika

Post autor: MariAnek »

Ok dzięki za radę
ruszyło jak dodałem nazwa_
ale wdalszym ciagu nie wiem jak się pozbyc odswierzania :-)
licznik dziala za kazdym otwarciem podstrony, która jest inkludowana na strone index jak to zablokować
próbowałem róznych liczników nawet takie które miały byc odporne na odswierzanie z aktualizacje poradzilimi funkcje
[php]<?php
date ("F d Y H:i:s.", filemtime('index.php'));
?>[/php]czy i w liczniku mozna to gdzies wkleić?
i / albo co zmienić??
v0lrath
Posty: 13
Rejestracja: śr gru 07, 2005 10:55 pm
Kontakt:

Re: [PHP][Problem] Skrypt licznika

Post autor: v0lrath »

Licznik, którego kod podałem trochę wyżej, blokuje zliczanie na jakiś czas poprzez mechanizm cookies - a więc zlicza realne oddzielne wejścia, a nie odświerzenia strony z tego samego komputera.
ODPOWIEDZ