• Super User

    [Risolto] Commenti nelle pagine

    Ciao a tutti,
    ho un sito fatto tutto di pagine con estensione .html .
    Premetto che con un file .htaccess posso tranquillamente farle considerare come fossero delle pagine in PHP.
    Vorrei chiedervi se conoscete uno script che una volta inserito nelle pagine del mio sito, consenta agli utenti di commentare ogni singola pagina, e magari il commento sarebbe bello che io potessi moderarlo prima che venga inserito.
    Non ditemi di andare su hotscripts, ci sono già andato. Vorrei sapere se voi avete qualche script da consigliarmi e se si può fare quello che voglio.
    grazie


  • User Attivo

    ... bella la cosa dei commenti per ogni pagina. E' una cosa che voglio realizzare da molto ma non ho mai tempo.
    E' una cosa semplicissima da fare in qualunque linguaggio (php, asp) con o senza un DB di appoggio. Se vuoi potrer moderare i messaggi meglio il DB di appoggio.

    Il primo problema per te è il fatto che le pagina siano in htm.

    • dici di poterle fa sembrare .php con l'.htaccess in realtà dovrebbe essere il contrario le cambi in php così puoi inserire il codice che ti serve e le fai figurare .htm così non devi riscrivere i link e i MDR non si accorgono di nulla.
    • puoi gestire il tutto con una pagina .php che poi include tramite jscript nelle tue pagine htm, ma allora credo che eventuali benefici di posizionamento li perdi perchè forse così il testo dei commenti non viene letto.

    nel prossimo msg posto un'idea di realizzazione in php senza uso di DB.


  • User Attivo

    ecco l'idea:

    Inserimento commento
    per l'inserimento del commento alla pagina, si usa un form semplice semplice sulla stessa pagina da commentare (o che si apre in una pop-up) con :

    • nome pagina preso tramite il $_SERVER['PHP_SELF']; (da passare tramite get se si usa la pop_up)
    • nome autore
    • email
    • commento
    • voto (listbox)

    il form con *method post *ha come action un file .php che si occupa dell scrittura di un file usando il file_put_contents:

    file_put_contents ( "commenti".$_SERVER['PHP_SELF'], "$autore|$email|$voto|commento\n", FILE_APPEND); 
    

    Visualizzazione commenti
    nella pagina in cui mostrare i commenti si recupera il contenuto del file dei commenti e si mette in un array ciascuna riga del file:

    $commenti = file_get_contents("commenti".$_SERVER['PHP_SELF']);
    $riga = explode ("\n", $riga );
    

    si fa quindi un bel ciclo su ogni elemento dell'array e con un altro explode si separano le informazioni di ciascun commento:

    $campi = explode ("|", $riga);
    

    in $campi a questo punto abbiamo le inforazioni di un commento separate in ciascun elemento dell'array che possiamo mostrare con un bel echo e la formattazione che più ci piace.

    echo ("$autore - $email
    voto: $voto
    $commento<hr />"&#41;;
    &#125; &#91;color=orange&#93;// chiusura del ciclo&#91;/color&#93;
    

    Facendo un count($riga) abbiamo il numero di commenti inseriti per la pagina specifica.


  • 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 🙂