Mettere "I più visti" nel sito

Shyson

Utente Attivo
19 Ago 2012
1.145
1
38
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.



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.
 
Ultima modifica: