Mettere "I più visti" nel sito

Discussione in 'Snippet PHP' iniziata da Shyson, 13 Aprile 2014.

  1. Shyson

    Shyson Utente Attivo

    Registrato:
    19 Agosto 2012
    Messaggi:
    1.111
    Mi Piace Ricevuti:
    1
    Punteggio:
    38
    Sesso:
    Maschio
    Questo codice permette di mettere nel proprio sito le pagine più visitate dagli utenti (non da te), naturalmente ci vuole un database con 3 records. I css non sono inclusi.

    Crea un database col nome che vuoi e una tabella di nome visitate con 3 records: pagina, url e visite, come da allegato. Come vedi il record "pagina" ha la chiave primaria.

    [​IMG]

    Crea un file e chiamalo visitate.php e mettici questo:
    PHP:
    <?php
    //Mette i dati nel DB e aumenta il contatore ad ogni visita
    function contatore($title) {*
    if (empty(
    $_COOKIE["contavisite"])) { //Richiama il cookie che c'è in cookie.php
    $continua false;*
    if (isset(
    $_SERVER['HTTP_REFERER']) != "") {
    $from parse_url($_SERVER['HTTP_REFERER']);
    $from $from['host'];
    }
    else {
    $from "";
    }
    $whitelist = array(
    /*Qui scrivi l'url del sito in modo che quando l'utente vi arriva DA TERZI, anche se digita con le pagine, il contatore non sale.
    Se poi è nel mio sito e ci clicca su, ovviamente il contatore del db sale*/
    "www.miosito.it"//Scrivi gli url senza http://
    "miosito.it" 
    );
    foreach (
    $whitelist as $sito) {
    if (
    $from == $sito$continua true;
    }
    if (
    $continua) {
    $mysqli = new mysqli("localhost""root""pwd""my_gruppoalveo"); 
    $url $_SERVER['PHP_SELF'];
    $esiste $mysqli->query ("SELECT * FROM visitate WHERE url='$url'");
    if (
    $esiste->num_rows == 0) {*
    $mysqli->query ("INSERT INTO visitate VALUES ('$title', '$url', 1)");
    }
    else {
    $old $esiste->fetch_array(MYSQLI_ASSOC); 
    $visite $old['visite'] + 1;
    $mysqli->query("UPDATE visitate SET pagina='$title', visite=$visite WHERE url='$url'");
    }
    }

    }
    //Estrae i dati dal DB e crea la sequenza delle pagine più viste 
    function piu_visitate($n) {
    $mysqli = new mysqli("localhost""root""pwd""my_gruppoalveo"); 
    $pag_viste $mysqli->query("SELECT * FROM visitate ORDER BY visite DESC LIMIT 0,$n");
    if (
    $pag_viste->num_rows 0) {
    echo 
    "<ol class=\"formol\"'piu_visitate'>";
    while (
    $link $pag_viste->fetch_array(MYSQLI_ASSOC)) { 
    echo 
    "<div style=\"margin-bottom:-10px; font-size:10px; color:#c4c4c4;\">".$link["visite"]." volte</div>"
    echo 
    "<li><a class=\"visti\" href='".$link['url']."'>".$link['pagina']."</a></li>";
     }
    echo 
    "</ol>";
    }
    }
    piu_visitate(5); //Metti il numero di pagine che vuoi venga visualizzato nella classifica
    ?>
    Come avrai visto sopra, c'è anche un cookie "contavisite", questo farà in modo che se sei TU a cliccare sulle pagine del tuo sito, il conteggio non sale. Questo sotto è il file cookie.php, metti anche questo nella cartella del sito e caricalo online.
    Poi ci devi entrare digitando l'url miosito.it/cookie.php (il nome della tua home, ovviamente). In questo modo tutte le pagine del tuo sito si registrano nel cookie.

    PHP:
    <?php
    /*Salva il cookie nei miei browsers (Safari, FF e Chrome) MA NON NELLA CACHE, perciò anche se la vuoto il cookie rimane.
    Quando IO visito le pagine del mio sito, questo cookie non fa salire il contatore, va messo in questo file INDIPENDENTE. Il richiamo si trova in visitate.php

    Alla scadenza del cookie bisogna entrare nei browsers e digitare: www.miosito.it/cookie.php e aggiornare la pag., il cookie si reinstallerà.*/

    setcookie("contavisite","valore"time()+157680000,"/","miosito.it"); //Dura 5 anni
    ?>

    Questo mettilo nella pagina dove vuoi venga visualizzato il contatore.
    PHP:
    <div class="info">I più visti</div>
    <?php
    include("visitate.php"); 
    ?>
    </div>

    Questo mettilo in fondo ad ogni pagina che vuoi venga conteggiata nel database, naturalmente devono anche esserci i parametri di connessione.
    PHP:
    ...
    <?php
    //Richiama la funzione che c'è in visitate.php, va messo qui
    contatore("Nome che vuoi");
    ?>
    </body>
    </html> 

    A video appare così (in base ai miei css), e si aggiorna da sola la classifica ed il numero di visite.
    [​IMG]
     
    Ultima modifica: 13 Aprile 2014
Sto caricando...

Condividi questa Pagina