Loading:


    Graficzny licznik odporny na odświeżanie

    Tutaj nie znalazłem takiego licznika, więc daje go Wam. Sam skrypt nie został napisany przeze mnie, ja go znalazłem po długich poszukiwaniach, gdzieś na jakimś nie polskim forum, intrukcję tłumaczyłem przez translatora, a później tylko przerobiłem i trochę rozbudowałem. Znalazłem dużo podobnych licznków, ale zawsze było coś nie tak, np. wchodząc bezpośrednio w plik z kodem było wszystko ok, ale już na główne wyskakiwały jakieś błędy...

     

    Screen licznika

     

    Instrukcja

    Na sam początek tworzymy folder licznik (oczywiście może to być obojętnie jaka nazwa, ale instrukcję oprę na konkretnym przykładzie), a w nim tworzymy kolejno pliki: counter.php, reload_blockade.php, visits_counter.txt no i jeszcze dodatkowo folder digits. W folderze digits tworzymy kolejny folder (można nawet kilka, to zależy ile utworzymy zestawów liczb), np. o nazwie 1, a do niego wrzucamy 10 plików graficznych, nazwanych kolejno od 0 do 9 z rozszerzeniami gif (nie koniecznie z takimi rozszerzenismi, mogą być też inne, ale wtedy trzeba będzie zmienić pewną część w kodzie). Poniżej przedstawiam zawartość plików counter.php, reload_blockade.php i visits_counter.txt.



    Napisz Artyku³

    Listing

    // -------------[ counter.php ]-------------
    <?php
    // Konfiguracja
    $digits_pack = "1"; // zestaw graficzny, czyli nazwa tego folderu, którego utworzyliśmy w digits
    $digits = 4; // liczba cyfr
    $reload_blockade = 1; // blokada odświeżania: 1 = włączona, 0 = wyłączona, blokada działa na zasadzie ciasteczka
    $counter_graphic_type = ".gif"; // rozszerzenie grafiki, czyli takie rozszerzenie w jakim mamy pliki graficzne
    $counter_data_file = "licznik/visits_counter.txt"; // plik z zawartością ilości odwiedzin
    $counter_graphic_directory = "licznik/digits/"; // folder z zestawami grafik licznika

    // dalsza nie konfiguralna część kodu
    if((!isset($_COOKIE["cookie_reload_blockade"]))||($reload_blockade==0)){
            $open_file = fopen($counter_data_file,"r");
            $lock_file = flock($open_file,LOCK_SH);
            if($lock_file==true) {
                    $visits_counter_value = fread($open_file,filesize($counter_data_file));
            }
            $unlck_file = flock($open_file,LOCK_UN);
            $close_file = fclose($open_file);
            $open_file = fopen($counter_data_file,"w+");
            $lock_file = flock($open_file,LOCK_EX);
            if($lock_file==true) {
                    $visits_counter_value++;
                    $update_visits_counter_value = fwrite($open_file,$visits_counter_value);
            }
            $unlck_file = flock($open_file,LOCK_UN);
            $close_file = fclose($open_file);
    }
    else {
            $open_file = fopen($counter_data_file,"r");
            $lock_file = flock($open_file,LOCK_SH);
            if($lock_file==true) {
                    $visits_counter_value = fread($open_file,filesize($counter_data_file));
            }
            $unlck_file = flock($open_file,LOCK_UN);
            $close_file = fclose($open_file);
    }
    $count_digits = strlen($visits_counter_value);
    if($digits>$count_digits) {
            $last_digit = $digits;
            $zero_digits = $digits-$count_digits;
    }
    else {
            $last_digit = $count_digits;
            $zero_digits = 0;
    }
    $next_digit = 0;
    // generowanie graficznego licznika odwiedzin
    $counter_result = "";
    for($i=0;$i<$last_digit;$i++) {
            $digit = substr($visits_counter_value,$next_digit,1);
            if($i<$zero_digits) {
                    $counter_result .= "<img src='".$counter_graphic_directory.$digits_pack."/0".$counter_graphic_type."'>";
        }
            else {
                    $counter_result .= "<img src='".$counter_graphic_directory.$digits_pack."/".$digit.$counter_graphic_type."'>";
                    $next_digit++;
        }
    }

    echo $counter_result;
    ?>

    // -------------[ reload_blockade.php ]-------------
    <?php
    if(!isset($_COOKIE['cookie_reload_blockade'])) {
            setcookie('cookie_reload_blockade','yes',time()+3600*2); // 3600*2=2h - przez taki czas będzie przechowywane ciasteczko w przeglądarce, chcąc wydłużyć czas przechowywania o 1h należy zamienić 3600*2 na 3600*3, itd. można też usunąć z kodu ",time()+3600*2" wtedy ciasteczko będzie przechowywane do końca sesji
    }
    ?>

    // -------------[ visits_counter.txt ]-------------
    0
    // nie wiem czy koniecznie trzeba wpisywać te 0, ale na wszelki wypadek można

    /* -------------[ plik strony głównej ]-------------
    Teraz trzeba umieścić plik counter.php na stronie głównej.
    Otwieramy plik ze stroną główną i w miejscy gdzie chcemy, aby wyświetlał się licznik wpisujemy: */

    <?php
    include('licznik/counter.php');
    ?>
    /* oczywiście pamiętamy o "licznik"
    Chcąc aby licznik był odporny na odświeżanie, trzeba jeszcze dodatkowo na początku pliku ze stroną główną (powyżej znacznika <html>) dopisać */

    <?php
    include("licznik/reload_blockade.php");
    ?>




    Dodano przez: sebulek Ranga: 0 Punktów: 0
    Komentarze użytkowników
    dam tylko info że poprawne zabezpieczenie przed odświeżaniem powinno być zabezpieczone przez: sesje, cookies i IP samo cookies wcale nie broni nas przed zaspamowaniem takiego licznika poniewaz cookis można wyłączyć i wtedy licznyk nie wyłapie przekrętu, jak bede miał chwile czasu udostęponie coś w oparciu o baze danych
    autor: igor | 5464 | 2010-03-19 11:29:39


      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors