logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak skonfigurować licznik odwiedzin w HTML za pomocą skryptu PHP?

marcinus128 30 Cze 2005 03:06 6361 16
REKLAMA
  • #1 1617518
    marcinus128
    Poziom 19  
    Posty: 444
    Pomógł: 25
    Ocena: 13
    zaczynam zabawe z webmasteringiem i tak jak na google znalazlem sa specjalne skrypty cgi-bin do ktorych sie odwoluje w pliku html, a znajduja sie one na innym serverze, lecz nie moglem tego skonfigurowac aby to dzialalo, mogl by ktos cos wiecej o tym napisac, podac jakis serwer ktory udostepnia to, lub jak napisac lub sciagnac cos takiego w php lub czymkolwiek innym

    sorki za lamerskie pytanie
    pozdrawiam
  • REKLAMA
  • #2 1617792
    321Kami
    Poziom 23  
    Posty: 526
    Pomógł: 57
    Ocena: 6
    a proszę uprzejmie :D Mojego autorstwa skrypcik :D

    <?php
    $plik=fopen("licznik.txt", "r");
    $licznik=fgets($plik);
    fclose($plik);
    $licznik++;
    $plik=fopen("dane/licznik.txt", "w");
    fwrite($plik, $licznik);
    fclose($plik);
    echo "$licznik";
    ?>

    Tylko musisz stworzyć na początku pusty plik licznik.txt w katalogu głównym strony. I wszystko będzie działać :D
  • #3 1617992
    air_szyna
    Poziom 13  
    Posty: 58
    Pomógł: 5
    Ocena: 3
    I musisz na ten pliczek ustawić odpowiednie uprawnienia (777)
  • REKLAMA
  • #4 1618528
    321Kami
    Poziom 23  
    Posty: 526
    Pomógł: 57
    Ocena: 6
    A tak oczywiście uprawnienia jak najbardziej :) jak jeszcze coś bardziej wyjaśnić, np. jak to działa to zapraszam na GG

    Pozdro
  • #5 1618824
    chlo
    Poziom 17  
    Posty: 282
    Pomógł: 4
    Ocena: 4
    A co tu wyjaśniać. Proste jak świński ogon <lol>
    A tak na poważnie to strasznie prosty ten licznik,ale zrobi swoje.
  • Pomocny post
    #6 1618936
    321Kami
    Poziom 23  
    Posty: 526
    Pomógł: 57
    Ocena: 6
    Licznik jest banalny, i to jest piękne :D chociaż teraz zrobiłem bardziej zaawansowany, żeby jak ktoś kliknie odświerz to nie wbijał odwiedzin znowu, bo to bez sensu było, problem w tym że jak ktoś zaczyna zabawę w php to najprostsze rzeczy są trudne :D wiem to z własnego doświadczenia. A jak już się złapie o co chodzi to z górki.
  • REKLAMA
  • #7 1622115
    marcinus128
    Poziom 19  
    Posty: 444
    Pomógł: 25
    Ocena: 13
    777 troche nie bardzo chyba ;] , raczej 755 ;]

    wlasnie o takis skrypt mi chodzilo, choc nie pogardzil bym tym, ktory po odwierzeniu nie doklada


    pozdrawiam thx
  • #9 1622670
    321Kami
    Poziom 23  
    Posty: 526
    Pomógł: 57
    Ocena: 6
    Poszukam tego skrypciku dzisiaj ale o przyzwoitej godzinie (czyli gdzieś tak ok 13.00) a teraz idę spać :D

    Pozdro
  • REKLAMA
  • #10 1627115
    air_szyna
    Poziom 13  
    Posty: 58
    Pomógł: 5
    Ocena: 3
    Dobra o te uprawnienia nie bede się kłócił. Gdzieś to wyczytałem przy okazji jakiegoś tutoriala to wkleiłem. Na codzień tego nie używam wolę mysqla.
  • #11 1627540
    321Kami
    Poziom 23  
    Posty: 526
    Pomógł: 57
    Ocena: 6
    Dobra poprawiony skrypcik na zmiennej sesyjniej, dorzuca +1 dopiero po wyłączeniu i włączeniu przeglądarki, tak myślę... :

    <?php
    session_start();
    if (isset($_SESSION['blokada'])){
    $plik=fopen("dane/licznik.txt", "r");
    $licznik=fgets($plik);
    fclose($plik);
    echo "$licznik";
    }
    else {
    $plik=fopen("dane/licznik.txt", "r");
    $licznik=fgets($plik);
    fclose($plik);
    $licznik++;
    $plik=fopen("dane/licznik.txt", "w");
    fwrite($plik, $licznik);
    fclose($plik);
    $_SESSION['blokada']=1;
    echo "$licznik";
    }
    ?>

    A tak a propos jak się negację robi bo chciałbym np if (isset($_SESSION['blokada']))==false, ale tak mi nie chciało działać, ale może coś źle napisałem ??
  • #12 1627823
    chlo
    Poziom 17  
    Posty: 282
    Pomógł: 4
    Ocena: 4
    Negacja jest przez wykrzyknik:
    if(!isset($_SESSION['blokada']))==true;
  • #13 1628862
    Sam Sung
    Poziom 33  
    Posty: 2007
    Pomógł: 227
    Ocena: 574
    Nie jestem pewien, ale to chyba jest tak jak w C, więc cały warunek powinien być w nawiasie (nie zaszkodzi spróbować, jeśli inaczej nie chce działać).
  • #14 1629302
    chlo
    Poziom 17  
    Posty: 282
    Pomógł: 4
    Ocena: 4
    EEE cosik ten skrypcik mi nie wyświetla tego co bym chciał :(
  • #15 1630284
    air_szyna
    Poziom 13  
    Posty: 58
    Pomógł: 5
    Ocena: 3
    A może tak.
    if(!isset($_SESSION['blokada']))
    {

    }
  • #16 1630337
    chlo
    Poziom 17  
    Posty: 282
    Pomógł: 4
    Ocena: 4
    Cytat:
    A może tak.
    if(!isset($_SESSION['blokada']))
    {

    }


    Słusznie.
    Tyle, że i tak w pliku txt nie dokonywał się żaden wpis. Nawet w prostszej wersji skryptu. Muszę się temu uważniej przyjrzeć.
  • #17 1632441
    SaraniS
    Poziom 26  
    Posty: 745
    Pomógł: 78
    Ocena: 26
    Witam (po raz pierwszy z Linuxa ;) )
    
    function banIP($ip)
    {
        $f_ban = 'etc/ips_banned';
        if(file_exists($f_ban)){
        $fd = fopen ($f_ban, "r+");
        }
        else{
        $fd = fopen ($f_ban, "a+");
        }
        if(!$fd) return false;
        while (!feof($fd)) {
            $line = trim(fgets($fd));
            if($line == $ip){
            fclose($fd);
            return true;
            }
        }
        fseek($fd, filesize($f_ban));
        fputs($fd, $ip."\r\n");
        fclose($fd);
        return false;
    }
    
    function counter(){
        $f_count = 'etc/ips_counter';
        $fp = fopen($f_count, "r+");
        $count = fgets($fp);
        
        if(!banIP($_SERVER['REMOTE_ADDR'])){
            $count = $count + 1;
            fseek($fp, 0);
            fputs($fp, $count);
        }
        else $count = $count + 0;
        
        fclose($fp);
    /*    $count = strval($count);
        $strLength = strlen($count);
        $imgStr = "";
        for($i = 0; $i<$strLength; $i++){
         $temp = 'cyfry/'.$count[$i].'.gif';
         $normal = $count[$i];
         $imgStr .= "<img src=\"".$temp."\" alt=\"".$normal."\">";
        } */
        return($count);
    }
    

    Powyzszy skrypt dobrze jest umiescic w jakims szablonie strony (aby byl wykonywany przy kazdym przeladowaniu); W ciele strony gdzie chcemy numer odwiedzin wywolujemy
    <?php echo counter(); ?>

    Pliki ips_banned oraz ips_counter sluza do przechowywania - jeden adresow IP ktore odwiedzily nasza strone a drugi - ilosci tych odwiedzin. Jak ktos lubi sie bawic to moze w oparciu o to zrobic blokowanie licznika na okreslony czas (w pliku ips_banned dodac czas zapisania i potem przy odczycie sprawdzac czy do czasu biezacego uplynal okreslony interwal) :)
    [EDIT]Teraz zauwazylem, ze jest tu nawet kod (w komentarzu) pozwalajacy na generowanie obrazkow :D Ja tego nie potrzebowalem, ale moze komus sie przyda ;) [/EDIT]
    Pozdrawiam

Podsumowanie tematu

✨ Dyskusja dotyczy konfiguracji prostego licznika odwiedzin w pliku HTML za pomocą skryptu PHP. Zaproponowano podstawowy skrypt PHP, który odczytuje wartość z pliku tekstowego licznik.txt, zwiększa ją o jeden i zapisuje z powrotem, wyświetlając aktualną liczbę odwiedzin. Podkreślono konieczność utworzenia pustego pliku licznik.txt oraz ustawienia odpowiednich uprawnień do zapisu (sugerowano 666 lub 755, odradzając 777). Wprowadzono także bardziej zaawansowaną wersję skryptu wykorzystującą zmienne sesyjne, aby zapobiec wielokrotnemu naliczaniu odwiedzin przy odświeżaniu strony przez tego samego użytkownika. Omówiono poprawne użycie negacji w warunkach PHP (if(!isset($_SESSION['blokada']))). Wspomniano o alternatywnych metodach, takich jak użycie bazy danych MySQL dla bardziej zaawansowanych rozwiązań. Poruszono także temat blokowania adresów IP w celu uniknięcia wielokrotnego liczenia tych samych odwiedzin.
Wygenerowane przez model językowy.
REKLAMA