kasująca się wartośc 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.
slawko
Nowy
Nowy
Posty: 127
Rejestracja: ndz sty 23, 2005 6:43 pm
Kontakt:

kasująca się wartośc licznika

Post autor: slawko »

Mam licznik i po jakimś czasie on kasuje swoją zawartość i on od nowa zaczyna zliczać wejścia na stronę, a chciałbym by cały czas liczył, przypuszczam że może to być spowodowane jak plik chce zapisać 2 wejścia na raz do pliku, jak to można rozwiązać?
Zastosowałem blokowanie pliku podczas zapisu ale i tak nie pomaga.

[php]<?php
session_start();
$sciezka='stat.txt';

if(file_exists($sciezka)){
$tablica=file($sciezka);
}else{
$tablica=array(0);
}


if(!isset($_SESSION['nr_ip']))
{
$_SESSION['nr_ip']=$_SERVER["REMOTE_ADDR"];
$tablica[0]++;
}

if ($plik=fopen($sciezka, 'wb'))
{
flock($plik,LOCK_EX);
fputs($plik,$tablica[0]);
flock($plik,LOCK_UN);
fclose($plik);
}

echo $tablica[0];

?>[/php]
benio101
Nowy
Nowy
Posty: 37
Rejestracja: pt kwie 13, 2007 10:50 am
Lokalizacja: TRN / PDG
Kontakt:

Re: kasująca się wartośc licznika

Post autor: benio101 »

na moje błąd przy ifie, powinno być:

[php]
<?php
session_start();
$sciezka='stat.txt';

if(file_exists($sciezka)){
$tablica=file($sciezka);
}else{
$tablica=array(0);
}


if(!isset($_SESSION['nr_ip']))
{
$_SESSION['nr_ip']=$_SERVER["REMOTE_ADDR"];
$tablica[0]++;
}

if ($plik==fopen($sciezka, 'wb'))
{
flock($plik,LOCK_EX);
fputs($plik,$tablica[0]);
flock($plik,LOCK_UN);
fclose($plik);
}

echo $tablica[0];

?>
[/php]
slawko
Nowy
Nowy
Posty: 127
Rejestracja: ndz sty 23, 2005 6:43 pm
Kontakt:

Re: kasująca się wartośc licznika

Post autor: slawko »

Na pewno nie jest to przez znak równa się, po zmienieniu tego znaku, czyści się zupełnie licznik, i nie chce się od nowa zapisywać. Czy zna ktoś rozwiązanie?
zakręcony
Nowy
Nowy
Posty: 127
Rejestracja: śr mar 26, 2008 7:33 pm

Re: kasująca się wartośc licznika

Post autor: zakręcony »

przeczytaj ostrzeżenie file_exists

ja stosuję cos takiego

[php]<?php
$plik="./licznik.txt";
if (isset($_SESSION['wejscie'])){
$fp=fopen($plik,"r+");
$hits=fgets($fp,10);
}else{
$_SESSION['wejscie']='ok';
$fp=fopen($plik,"r+");
$hits=fgets($fp,10);
$hits=$hits+1;
fseek($fp,0);
fputs($fp,$hits);
fclose($fp);
}

//wyswietlenie
echo $hits;
?>[/php]
?>[/php]
slawko
Nowy
Nowy
Posty: 127
Rejestracja: ndz sty 23, 2005 6:43 pm
Kontakt:

Re: kasująca się wartośc licznika

Post autor: slawko »

No tak, ale czy ten licznik jest odporny na odświeżanie strony?
zakręcony
Nowy
Nowy
Posty: 127
Rejestracja: śr mar 26, 2008 7:33 pm

Re: kasująca się wartośc licznika

Post autor: zakręcony »

po zapuszczeniu skryptu, skrypt sprawdza czy jest sesja, jak jest to nie dodaje wartosci, jak nie ma to tworzy sesję i dodaje...

jest tak samo odpowrny, jak Twój ;)
ODPOWIEDZ