Nie wiem czy będzie jeszcze czas na rozwinięcie tego skryptu to co teraz osiągnąłem wyklucza prze dewszystkim ewentualne błędy, tym razem perser nie będzie mógł wyświetlić komunikatów typu :

Całość jest bardziej dopracowana dodatkowo uzywam poleceń (touch) (file_get_contents) (file_put_contents) (is_writable) (LOCK_EX), wszystko po to by z dokładnością otwierać, pobierać oraz zabezpieczać treść.
Także ogólny system działania tego licznika jest całkiem różny od poprzednika. Działa to tak, że okres ważności ciasteczka to 24h znaczy jedna doba po tym czasie ciastko znika i automatycznie następuje nabicie punku na liczniku. W tym ktory widac niektóre dane naprzemiennie się odświeżają, a część z nich odswierza sie i jest podbijana od nowa.
rozwiń kod
<!-- Ciasteczka należy stosować przed wysyłaniem jakichkjolwiek informacji, dlatego stosując setcookie() wenątrz kodu, jeśli wyrzuca błędy jak powzej należy włączy buforowanie PHP poleceniem ob_start() -->
» zaznacz kod
ob_start();
// 0 - a miesiac/dzien/rok
// 1 - Unikatowych odwiedzin ogólnie
// 2 - Ilość odsłon unikatowych w ciągu jednego dnia
// 3 - Ilość odsłon wszystkich wyświetleń w ciągu jednego dnia
// 4 - Całkowita ilość wyświetleń strony
$dat=date("y/m/d"); // data miesiac /dzien/rok
$asd=date("w"); // dzien tygodnia liczbowo
$plik = 'rest.txt';
if((!isset($_COOKIE['dalejciasteczkaa'])) and (file_exists($plik))) {
$tekst = @file_get_contents($plik); // pobieram plik
$dane = explode(";", $tekst); // wybieram z niego dane
$dane[2]++; // UNIKAT DNI jesli jeden warunek zostaje spelniony dodaje sie
$dane[3]++; // WYS. podczas pierwszej wizyty
$dane[4]++; // WYS. WSZYTKICH - zwiekszam bezwarunkowo
if($dane[0] !== "$dat") {
$dane[1]++; // UNIKAT OGOLNIE licznik sie dodaje tylko jesli dwa warunki zostana spelnione
$dane[2] = 1; // UNIKAT DNI jesli dwa warunki zostana spelnione odswieza sie
$dane[3] = 1; // ILOSC WYS. W CIAGU DNIA - resetuje sie z rozna data
}
setcookie("dalejciasteczkaa", "zliczono", time() + 60 * 60 * 24);
@file_put_contents($plik, "$dat;$dane[1];$dane[2];$dane[3];$dane[4];", LOCK_EX);
}
elseif(file_exists($plik)) {
$tekst = @file_get_contents($plik);
$dane = explode(";", $tekst);
$dane[3]++; // WYS. podczas pozostalych wizyt
$dane[4]++; // WYS. WSZYTKICH - zwiekszam bezwarunkowo
if($dane[0] !== "$dat") {
$dane[2] = 1; // UNIKAT DNIA odswierza sie rowniez w tym samym przypadku gdy data jest rozna
$dane[3] = 1; // ILOSC WYS. W CIAGU DNIA - resetuje sie z rozna data
}
@file_put_contents($plik, "$dat;$dane[1];$dane[2];$dane[3];$dane[4];", LOCK_EX);
}
elseif(!file_exists($plik)) {
@touch($plik);
@chmod($plik, 0777);
if(is_writable($plik)) {
@file_put_contents($plik, "$dat;1;1;1;1;");
}
else {
$error[] = 'mały błąd : plik ma zle prawa lub nie został utworzony';
}
}
//pobieram dane jesli plik ma wlasciwe prawa
if(is_readable($plik)) {
$efekt = @file_get_contents($plik);
$dane = explode(";", $efekt);
// dodatkowe opcje daty
$miesiac_pl = array(1 => 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'PIątek', 'Sobota', 'Niedziela');
echo "
Aktualnie mamy: $dane[0] - $miesiac_pl[$asd]
Unikatowych odwiedzin ogólnie: $dane[1]
Ilość odsłon unikatowych w ciągu jednego dnia: $dane[2]
Ilość odsłon wszystkich wyświetleń w ciągu jednego dnia: $dane[3]
Całkowita ilość wyświetleń strony: $dane[4]
";
}
if(!empty($error)) {
echo "Wynikły błędy, upewnij się czy skrypt działa dobrze";
}
ob_end_flush();
?>
Aktualnie mamy: 09/06/24 - Środa
Unikatowych odwiedzin ogólnie: 6
Ilość odsłon unikatowych w ciągu jednego dnia: 1
Ilość odsłon wszystkich wyświetleń w ciągu jednego dnia: 5
Całkowita ilość wyświetleń strony: 68
- alternartywa na polecenie fopen() jest file_get_content(), jednak nalezy uważać gdyz to polecenie jest rozpoznawane dopiero w PHP od wersji 5.0.0
- czesto stosowana malpa @ użyj jej na wypadek bledow persera
- uważaj na 'ob_start' musi zostać użyte zanim informacje dotrą do użytkownika
» ponieżej zamieszczam to czego wielu webmasterow unika, a co moze sie przydać