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]
kasująca się wartośc licznika
Re: kasująca się wartośc licznika
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]
[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]
Re: kasująca się wartośc licznika
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?
Re: kasująca się wartośc licznika
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]
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]
Re: kasująca się wartośc licznika
No tak, ale czy ten licznik jest odporny na odświeżanie strony?
Re: kasująca się wartośc licznika
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 ;)
jest tak samo odpowrny, jak Twój ;)
