• User Attivo

    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 eliminabili

    Il tutto consiste di due file

    1. commenti_read.php
    2. 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&#40;"commenti_read.php"&#41;; ?>
    

    commenti_read.php

    <?php
    $ruri = pathinfo&#40;$_SERVER&#91;"REQUEST_URI"&#93;&#41;;
    $page = substr&#40;$ruri&#91;'basename'&#93;,0 ,-8&#41;; //riga non necessaria eliminabile
    $ext = $ruri&#91;'extension'&#93;; //per verificare che la pagina non sia una directory tipo: http&#58;//sito.com/sezione/
    if &#40;$ext&#41; &#123;
    	if &#40;file_exists&#40;"commenti-$page"&#41;&#41; &#123;
    		$commenti = file_get_contents&#40;"commenti-$page"&#41;; 
    		$riga = explode &#40;"\n", $commenti &#41;;
    		foreach &#40;$riga as $record&#41;	&#123;
    		 $stile = &#40;$stile == "commenti_pag"&#41; ? "commenti_pag_alt" &#58; "commenti_pag";
    		 $campi = explode &#40;"|", $record&#41;;
    		 $elenco_cm&#91;&#93; = &#40;"<div id=\"$stile\">**$campi&#91;0&#93;** scrive&#58;
    $campi&#91;2&#93;
    *voto pagina&#58; $campi&#91;1&#93;*</div>"&#41;; 
    		  &#125;
    		  array_pop&#40;$elenco_cm&#41;;
    		  array_reverse&#40;$elenco_cm&#41;;
    		  $elenco_cm = implode&#40;'', $elenco_cm&#41;;
    		&#125;
    $commenti_num = &#40;count&#40;$riga&#41; == 0&#41; ? 0 &#58; count&#40;$riga&#41; - 1;
    echo &#40;"
    
    **$commenti_num Commenti - <a href=\"/commenti_wrt.php?pagina=$page\" target=\"_blank\">Inserisci il tuo</a>**</p>$elenco_cm"&#41;;
    &#125;
    ?>
    

    commenti_wrt.php

    <?php
    $commento = $_POST&#91;commento&#93;;
    $pagina= &#40;$_GET&#91;pagina&#93;&#41; ? $_GET&#91;pagina&#93; &#58; $_POST&#91;pagina&#93;;
    if &#40;$commento&#41; &#123;
    	$file="commenti-".$pagina;
    	$autore= &#40;$_POST&#91;autore&#93;&#41; ? strip_tags&#40;$_POST&#91;autore&#93;&#41; &#58; "anonimo";
    	$voto=4; //$_POST&#91;voto&#93;;
    	$commento = strip_tags&#40;str_replace&#40;"\r\n", "", nl2br&#40;$commento&#41;&#41;, "******<u>
    "&#41;;
    	//crea o accoda al file commenti-pagina_originaria.php il nuovo commento
    	$handle = fopen&#40;$file, 'a'&#41;;
    	fwrite &#40;$handle, "$autore|$voto|$commento\n"&#41;;
    	fclose&#40;$handle&#41;;
    	echo "Il tuo commento è stato aggiunto, grazie.
    Continua la navigazione</p><a href=\"#\" onclick=\"window.close&#40;&#41;\">Chiudi Finestra</a>";
    &#125;
    else &#123; 
    echo "
    Inserisci il tuo commento alla pagina $pagina, compilando i campi sotto
    &#40;solo il testo del commento &egrave; obbligatorio&#41;
    <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>";
     &#125;?>
    

  • User Newbie

    SALVE, esiste una demo online dello script?


  • User Attivo

    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.


  • User Attivo

    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


  • User Attivo

    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


  • User Attivo

    ... 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 😉


  • User Attivo

    grazie centix,
    interessante il trucchetto del finto captcha:fumato:
    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??


  • User Attivo

    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


  • User Attivo

    fantastico!
    grande centix:vaiii:


  • Super User

    Segnalo come risolto 🙂