Strona 1 z 1

[PHP][Problem] Skrypt licznika

: czw gru 15, 2005 5:44 pm
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 :-(

Re: [PHP][Problem] Skrypt licznika

: czw gru 15, 2005 9:57 pm
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.

Re: [PHP][Problem] Skrypt licznika

: czw gru 15, 2005 10:12 pm
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.

Re: [PHP][Problem] Skrypt licznika

: czw gru 15, 2005 10:55 pm
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);

Re: [PHP][Problem] Skrypt licznika

: czw gru 15, 2005 11:04 pm
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.

Re: [PHP][Problem] Skrypt licznika

: czw gru 15, 2005 11:12 pm
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:

Re: [PHP][Problem] Skrypt licznika

: pt gru 16, 2005 12:46 am
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]

Re: [PHP][Problem] Skrypt licznika

: pt gru 16, 2005 7:57 am
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ć??

Re: [PHP][Problem] Skrypt licznika

: pt gru 16, 2005 1:05 pm
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.