- Home
- Categorie
- Coding e Sistemistica
- Coding
- [Risolto] Commenti nelle pagine
-
ecco qui, ho realizzato per un mio sito il codice per poter inserire i commenti a ciascuna pagina del sito.
In realtà ci sono alcune funzioni specifiche per il mio sito ma non dovrebbero dar fastidio e cmq sono facilmente eliminabiliIl tutto consiste di due file
- commenti_read.php
- commenti_wrt.php
Il primo è da includere nella pagine in cui si vuole mostrare i commenti e permettere di inserirli;
Il secondo è il form per inserire il commento e il codice per scriverlo in un file .php che verrà creato con il nome: commenti-pagina referrer. Verrà creato un file di commenti per ciascuna pagina con almeno un commento.Per installare lo script basta copiare i due file nella root e fare l'include del primo nella pagina del sito (che deve essere php).
<?php include("commenti_read.php"); ?>
commenti_read.php
<?php $ruri = pathinfo($_SERVER["REQUEST_URI"]); $page = substr($ruri['basename'],0 ,-8); //riga non necessaria eliminabile $ext = $ruri['extension']; //per verificare che la pagina non sia una directory tipo: http://sito.com/sezione/ if ($ext) { if (file_exists("commenti-$page")) { $commenti = file_get_contents("commenti-$page"); $riga = explode ("\n", $commenti ); foreach ($riga as $record) { $stile = ($stile == "commenti_pag") ? "commenti_pag_alt" : "commenti_pag"; $campi = explode ("|", $record); $elenco_cm[] = ("<div id=\"$stile\">**$campi[0]** scrive: $campi[2] *voto pagina: $campi[1]*</div>"); } array_pop($elenco_cm); array_reverse($elenco_cm); $elenco_cm = implode('', $elenco_cm); } $commenti_num = (count($riga) == 0) ? 0 : count($riga) - 1; echo (" **$commenti_num Commenti - <a href=\"/commenti_wrt.php?pagina=$page\" target=\"_blank\">Inserisci il tuo</a>**</p>$elenco_cm"); } ?>
commenti_wrt.php
<?php $commento = $_POST[commento]; $pagina= ($_GET[pagina]) ? $_GET[pagina] : $_POST[pagina]; if ($commento) { $file="commenti-".$pagina; $autore= ($_POST[autore]) ? strip_tags($_POST[autore]) : "anonimo"; $voto=4; //$_POST[voto]; $commento = strip_tags(str_replace("\r\n", "", nl2br($commento)), "******<u> "); //crea o accoda al file commenti-pagina_originaria.php il nuovo commento $handle = fopen($file, 'a'); fwrite ($handle, "$autore|$voto|$commento\n"); fclose($handle); echo "Il tuo commento è stato aggiunto, grazie. Continua la navigazione</p><a href=\"#\" onclick=\"window.close()\">Chiudi Finestra</a>"; } else { echo " Inserisci il tuo commento alla pagina $pagina, compilando i campi sotto (solo il testo del commento è obbligatorio) <form name=\"form1\" method=\"post\" action=\"commenti_wrt.php\"> Autore <input name=\"autore\" type=\"text\" id=\"autore\" size=\"20\"> Commento <textarea name=\"commento\" cols=\"60\" rows=\"4\" wrap=\"VIRTUAL\" id=\"commento\"></textarea> <input type=\"hidden\" name=\"pagina\" value=\"$pagina\"> <input type=\"submit\" name=\"Submit\" value=\"Invia\"> </form>"; }?>
-
SALVE, esiste una demo online dello script?
-
solo se scrivi commenti sensati a tema con il sito o se ci metti un PROVA bello grosso
www.kitesurf-italia.com ogni pagina tranne home del sito e home si sezione.
Lo script é stato leggermente modificato per evitare spam.
Uno svataggio dello script fatto cosí é che per vedere la pagina bisogna fare il refresh. In realtá tale problema é risolvibile facilmente eleminado il target="_blank" nel link all´inserimento del commento e mettendo un refresh php alla pagine referrer nel file commenti_wrt.php una volta che il commento é stato aggiunto.
-
ciao ho visto che nella modifica hai aggiunto il captcha per evitare lo spam.
riusciresti a postare la modifica dello script?
grazie e complimenti per il sito
-
il captcha é finto
ho fatto semplicemente una gif a mano con un scritta facile appunto a tema con il sito stesso e poi ho aggiunto al for del commento un semplice input box dove inserire il testo dell´immagine.
Adesso non ho tempo di rimandare lo script, mi ri-prometto di farlo in fututo (probabile futuro remoto). Ma ripeto che si tratta di aggiungere un tag html input in piú e di fare il controllo lato client in jscript o lato server (come faccio io) nel file commenti_wrt.php
-
... anzi ecco il copy and paste del codice della mia nuova commenti_wrt.php . La commenti_read.php non é cambiata
<?php //script commenti by kitesurf-italia.com mgsnowboard.com $commento = $_POST[commento]; $pagina= ($_GET[pagina]) ? $_GET[pagina] : $_POST[pagina]; $check = strtoupper(htmlspecialchars($_POST['check'])); if ($commento && $check=="KITE") { $file="commenti-".$pagina; $autore= ($_POST[autore]) ? strip_tags($_POST[autore]) : "kitesurfer anonimo"; $data = date('j.m.y G:i'); $voto=4; $commento = strip_tags(str_replace("\r\n", "", nl2br($commento)), "<b><i><em><strong><u><br>"); //crea o accoda al file commenti-pagina_originaria il nuovo commento $handle = fopen($file, 'a'); fwrite ($handle, "$autore|$voto|$commento|$data\n"); fclose($handle); echo "Il tuo commento è stato aggiunto, grazie. Per vederlo aggiorna la pagina commentata</p>Continua la navigazione <a href=\"#\" onclick=\"window.close()\">Chiudendo questa Finestra</a>"; } else { if ($commento!="" && $check!="KITE") {echo ("<h2 style=\"margin-bottom:0px;color:red;\">ATTENZIONE</h2><br /><h3 style=\"margin-top:0px;color:red;\">devi inserire il codice di verifica dell´immagine</h3>");} echo "Inserisci il tuo commento alla pagina <strong>$pagina</strong>, compilando i campi sotto<br />(solo il testo del commento e <em>l´immagine di verifica</em> sono obbligatori) <form name=\"form1\" method=\"post\" action=\"commenti_wrt.php\"> Autore<br /><input name=\"autore\" type=\"text\" id=\"autore\" size=\"20\" value=\"".stripslashes($POST[autore])."\"><br /><br /> Commento<br /><textarea name=\"commento\" cols=\"60\" rows=\"4\" wrap=\"VIRTUAL\" id=\"commento\">".stripslashes($commento)."</textarea> <input type=\"hidden\" name=\"pagina\" value=\"$pagina\"></br><br /> <div><img src=\"kite-chapta.gif\" width=\"93\" height=\"46\" alt=\"immagine di verifica\"/><br /><input type=\"text\" name=\"check\" size=\"10\"></div><br /> <input type=\"submit\" name=\"Submit\" value=\"Invia\"> </form>"; }?>
Sostituite $check!="KITE" (attenzione al punto esclamativo) e $check=="KITE" con la parola di controllo che preferite al posto di KITE. E´sufficiente, almeno sul mio sito, a evitare commenti di spam automatico, on c´é bisogno di un vero captcha, é piú facile anche per gli utenti
Naturalmente chi trae beneficio da questo scriptino potrebbe ricambiare l´utilitá rievuta con un link a kitesurf-italia.com o mgsnowboard.com
-
grazie centix,
interessante il trucchetto del finto captcha
ora proverò a giochicchiare con i tuoi script, non sono ancora convinto di un eventuale inserimento sul mio portale in quanto i commenti negativi potrebbero trasformarsi in un'arma a doppio taglio. cmq se decido di portare avanti questa soluzione inserirò un link a mgsnowboard.com (tra l'altro è anche in tema:D)
un'ultima domanda: sarebbe interssante ricevere una email che avvisi ogni qualvolta un commento viene inserito, nessuna idea di come poterlo fare??
-
molto semplice:
aggigungere sotto la riga che inizia con "fwrite ...", il seguente codice.mail("[email protected]", "nuovo commento dal sito", "$autore/n $commento/n$ data\n");
o qualcosa di simile. Basta che cerchi esempio in google: php email
-
fantastico!
grande centix
-
Segnalo come risolto