Il forum è in modalità sola lettura dal 16 giugno 2019, ora siamo su Discord. Altre informazioni

[Release] Contatore visualizzazioni PHP

Questo è uno dei miei primi progetti in PHP che ho deciso di rilasciare qui su Minecraft Italia, ne seguiranno altri...
In questo caso parliamo di un contatore di visualizzazioni interamente creato in PHP e che non richiede un database MySQL poichè è dotato di un suo database locale.


Per utilizzare il seguente contatore è necessario seguire le istruzioni seguenti:

1) Inserire nella cartella del server i seguenti file: (il nome dato deve corrispondere)

index.php
Codice:
<?php

/*STRINGA DA INSERIRE IN OGNI PAGINA DOVE VOLETE VISUALIZZARE IL CONTATORE*/
require "counter.php";

/*STRINGA PER VISUALIZZARE IL CONTATORE*/
/*PUO' ANCHE ESSERE SEMPLICEMENTE UTILIZZATA LA VARIABILE "$visual"*/
/*IN OGNI PAGINA HTML DOVE VOLETE UTILIZZARE IL CONTATORE*/
echo "<center><h1>" . $visual . " VISUALIZZAZIONI</h1></center>";

?>
counter.php
Codice:
<?php

/*APERTURA DATABASE PER LETTURA*/
$db = fopen("database.txt", "r");

/*CREZIONE VARIABILE VISUALIZZAZIONI ATTUALI*/
$now = fread($db,filesize("database.txt"));

/*AGGIUNTA +1 ALLE VISUALIZZAZIONI ATTUALI (MA NON ANCORA SALVATA)*/
$visual = $now + 1;

/*CHIUSURA FILE (VARIABILE CREATA E MANTENUTA)*/
fclose($db);

/*APERTURA DATABASE PER SCRITTURA E RESET DATI ESISTENTI*/
$db = fopen("database.txt", "w");

/*SCRITTURA DEL NUOVO NUMERO VISUALIZZAZIONI SU DATABASE*/
fwrite($db, $visual);

/*CHIUSURA FILE (CON NUMERO VISUALIZZAZIONI MODIFICATO)*/
fclose($db);

?>
setup.php
Codice:
<?php

$setup = "0";

$db = fopen("database.txt", "w");

fwrite($db, $setup);

fclose($db);

?>
2) Dopo aver caricato i precedenti file navigare col proprio browser sul file setup.php.

Dovrete eseguire questo passaggio sia la prima volta che utilizzate questo contatore (per installare il database), ed ogni volta che vorrete riportare il contatore a 0 visualizzazioni.

3) Integrate il contatore nella pagina dove desiderate utilizzarlo seguendo la breve guida che ho scritto nel file index.php


Sito web dove è possibile provare il contatore:

Noterete che ricaricando la pagina il contatore aumenterà di uno.

Codice sorgente sviluppato da Gabriele Preziosa
(Modificato 11/03/2017, 17:14 da TheCrazyGamer73.)
1 utente apprezza questo post
@TheCrazyGamer73 per essere il primo, non posso dirti che è venuto male, ma hai usato troppe linee di codice per fare tutto questo. Comunque, ottimo, per lo meno funziona Wink
Hai problemi nel gestire il tuo server? Ti posso aiutare
1 utente apprezza questo post
11/03/2017, 17:32Majestcx ha scritto: @TheCrazyGamer73 per essere il primo, non posso dirti che è venuto male, ma hai usato troppe linee di codice per fare tutto questo. Comunque, ottimo, per lo meno funziona Wink

Ti ringrazio molto!!!
Si,un file-splitting per una cosa cosi' semplice e' forse esagerato,ma comunque potresti migliorare lo script utilizzando la conta delle views per IP e non tramite render di una pagina,dato che cosi' non e' molto funzionale: basta infatti inviare uno spamm di richieste alla suddetta pagina e riempire il count di views false

Oltretutto su un sito di medie dimensioni sarebbe meglio salvare le views su file tramitei un timer,per evitare un sovraccarico del filesystem; Potresti usare qualcosa di simile ai `cron job` su linux
11/03/2017, 18:50_Luke1_ ha scritto: Si,un file-splitting per una cosa cosi' semplice e' forse esagerato,ma comunque potresti migliorare lo script utilizzando la conta delle views per IP e non tramite render di una pagina,dato che cosi' non e' molto funzionale: basta infatti inviare uno spamm di richieste alla suddetta pagina e riempire il count di views false

Oltretutto su un sito di medie dimensioni sarebbe meglio salvare le views su file tramitei un timer,per evitare un sovraccarico del filesystem; Potresti usare qualcosa di simile ai `cron job` su linux

Mi informo ed aggiorno il tutto!
Grazie mille dei consigli!

Qualcuno sta spammando il tasto per ricaricare la pagina [emoji23]...,.

Io prima di pubblicare la guida avevo portato a 0 il contatore... (Modificato 11/03/2017, 19:18 da TheCrazyGamer73.)
Ti ho trovato due soluzioni così la gente non botta le views : )
Semplice - Potresti salvare nei cookie se l'utente ha già visualizzato. Poi cancellare i cookie ogni ora cosi puoi avere un views all'ora da quell'utente.
Semplice+ - Potresti sapere le sorgenti delle visualizzazioni così da salvare l'IP in un db in locale.
Buona fortuna.
web coso presso web 
11/03/2017, 19:19LUGOZZI_soar ha scritto: Ti ho trovato due soluzioni così la gente non botta le views : )
Semplice - Potresti salvare nei cookie se l'utente ha già visualizzato. Poi cancellare i cookie ogni ora cosi puoi avere un views all'ora da quell'utente.
Semplice+ - Potresti sapere le sorgenti delle visualizzazioni così da salvare l'IP in un db in locale.
Buona fortuna.


Credo che utilizzerò la prima... mi ispira di più.... credo che a questo punto farò 2 versioni... con i 2 metodi....

Stiamo per raggiungere le 1000 visual nottate signori....!

[emoji23] (Modificato 11/03/2017, 19:21 da TheCrazyGamer73.)
bravo, non ne so molto di php ma a quanto pare funziona Smile
1 utente apprezza questo post
Sto lavorando ad una versione che supporti l'accesso tramite cookie... (per evitare i bot)...
QUESTA EDIZIONE FUNZIONA CON I COOKIE (NIENTE SPAM)

Come script è molto semplice, anche se ci sono alcune righe di codice che non hanno molta utilità e quindi potevano essere rimpiazzate con qualche sistema migliore.

Ma tutto sommato, come script è molto semplice e funzionale. Bravo per averlo postato Smile
1 utente apprezza questo post
13/03/2017, 22:59Kaost30 ha scritto: Come script è molto semplice, anche se ci sono alcune righe di codice che non hanno molta utilità e quindi potevano essere rimpiazzate con qualche sistema migliore.

Ma tutto sommato, come script è molto semplice e funzionale. Bravo per averlo postato Smile


Domani pomeriggio posto anche il codice sorgente della nuova edizione che si interfaccia con i cookie..,
SEMPLICE RISCRITTURA DEL FILE counter.php, GLI ALTRI FILE RESTANO INVARIATI

Codice:
<?php

/*APERTURA DATABASE PER LETTURA*/
$db = fopen("database.txt", "r");

/*CREZIONE VARIABILE VISUALIZZAZIONI ATTUALI*/
$now = fread($db,filesize("database.txt"));

/*AGGIUNTA +1 ALLE VISUALIZZAZIONI ATTUALI (MA NON ANCORA SALVATA)*/
$visual = $now + 1;

/*CHIUSURA FILE (VARIABILE CREATA E MANTENUTA)*/
fclose($db);

/*SE IL COOKIE NON E' PRESENTE ESEGUE NUOVA AGGIUNTA DATI*/
$cookie_nome = "visualizzazione";
$cookie_valore = "In ultima ora";

if (isset($_COOKIE[$cookie_nome])) {
    /*NON VIENE ESEGUITO NULLA IN CASO DI COOKIE TROVATO*/
} else {
    
    /*APERTURA DATABASE PER SCRITTURA E RESET DATI ESISTENTI*/
    $db = fopen("database.txt", "w");
    
    /*SCRITTURA DEL NUOVO NUMERO VISUALIZZAZIONI SU DATABASE*/
    fwrite($db, $visual);
    
    /*CHIUSURA FILE (CON NUMERO VISUALIZZAZIONI MODIFICATO)*/
    fclose($db);
    
    /*AGGIUNTA COOKIE - DURATA UN ORA*/
    setcookie($cookie_nome, $cookie_valore, time() + (3600), "/"); // 3600 = 1 ORA
}
?>
(Modificato 14/03/2017, 21:24 da TheCrazyGamer73.)
Discussioni simili
 
[Progetto] PHP support project
0 204
Risposta di ImCod3x_
02/03/2019, 13:36
Risposta di ImCod3x_
02/03/2019, 12:57
 
[Problema] problema codice PHP
2 682
Risposta di _Mega_
29/01/2019, 18:02
 
Risposta di _Mega_
29/01/2019, 17:57
 
[Risolto] Php Litebans
Risposta di AntoLuMeju99
15/12/2018, 13:15

Utente(i) che stanno guardando questa discussione: 1 Ospite(i)