• User Attivo

    Script antispam per guestbook

    Salve.

    Cerco uno script antispam per il mio guestbook che troverete al link seguente

    [..]

    Vi prego di aiutarmi perchè il sito l'ho fatto io ma è di un'associazione di beneficenza e quindi ho una grossa responsabilità.

    Attendo risposta,
    Cordiali Saluti


  • User Attivo

    Un semplice antispam potrebbe essere un codice alfanumerico casuale con un campo di conferma dello stesso
    Fammi sapere a presto


  • User Attivo

    Va benissimo qualsiasi cosa, purchè impedisca l'inserimento automatico dei messaggi.


  • User Attivo

    @Cahill90 said:

    Va benissimo qualsiasi cosa, purchè impedisca l'inserimento automatico dei messaggi.
    Allora cominciamo inserendo nel form il codice generato casualmente, nel nostro caso di 6 caratteri, visualizzandolo.
    <?php
    // MI RICAVO UN CODICE ALFANUMERICO CASUALE COMPOSTO DA 6 CARATTERI
    $strx = '';
    for ($i=1; $i<=6; $i++)
    {
    $set = array(rand(97,122),rand(48,57),rand(65,90));
    $strx .= chr($set[rand(0,2)]);
    }
    $str = $strx; // CODICE REALE
    $str_OK = $str[0]." ".$str[1]." ".$str[2]." ".$str[3]." ".$str[4]." ".$str[5];
    echo "<font color='#FF0000'>" . $str_OK . "</font>"; // CODICE VISUALIZZATO CON SPAZI
    ?>
    <input name="codice_x" type="hidden" id="codice_x" value="<?php echo $str; ?>">
    Metto, in un campo nascosto, il valore del codice generato

    Conferma: <input name="codice" type="text" id="codice" size="8" maxlength="6"><<- Digitare il codice in <b><font color="#FF0000">R O S S O</font></b>
    Il campo della conferma del codice

    Hai affermato che il tutto avviene nella stessa pagina, quindi nella parte dei controlli devi aggiungere solamente quello relativo al codice digitato se diverso dal generato.

    Es.:


    $codice = $_POST['codice'];
    $codice_x = $_POST['codice_x'];

    if ($codice != $codice_x)
    {
    echo "Conferma CODICE errata<br><br>
    <a href='#' onClick='history.go (-1)'>RIPROVA</a>";
    }


    Spero sia stato chiaro altrimenti fatti risentire
    A presto


  • User Attivo

    Purtroppo non sono bravo con il php, le fornisco il codice del file index.tpl e potrebbe modificarlo lei? La ringrazio.

    index.tpl

    <style type="text/css">
    <!--
    .style1 {
    	color: #0000CC;
    	font-weight: bold;
    }
    -->
    </style>
    <div id="new">
     <form action="insert.php" method="post" id="insert">
      <fieldset>
      <legend class="style1">Lascia un messaggio nel guestbook </legend>
       <p><label for="nick" title="Nickname - accesskey: N" accesskey="n">Nickname:</label><input type="text" name="nick" id="nick" class="text" value="Nome" tabindex="1" onfocus="if (this.value=='Nome') { this.value=''; }" maxlength="15" /><span class="max_size">massimo 15 caratteri</span></p>
       <p><label for="text" title="Testo - accesskey: T" accesskey="t">Testo:</label><textarea name="text" id="text" class="text" rows="5" cols="30" tabindex="2" onfocus="if (this.value=='Testo del messaggio') { this.value=''; }">Testo del messaggio</textarea></p>
       <p><label for="submit" title="Conferma - accesskey: C" accesskey="c">Conferma:</label><input type="submit" name="submit" id="submit" class="button" value="Invia" tabindex="3" /></p>
      </fieldset>
     </form>
    </div>
    
    <hr />
    
    <div id="container_messaggi">
     <!-- CICLO MESSAGGI -->
     <div class="messaggio">
      <!-- INIZIO admin -->
      <div class="admin">
       <p><a href="admin.php?del={MEX_ID}">Cancella messaggio</a></p>
      </div>
      <!-- FINE admin -->
      <div class="info">
       <p class="autore"><strong>{NICK}</strong></p>
       <p class="dataora">{DATA_ORA}</p>
      </div>
      <div class="testo">
       <p>{TESTO}</p>
      </div>
     </div>
     <hr />
     <!-- CICLO MESSAGGI -->
    </div>
    
    <div id="pagine">
     <p class="titolo_pagine">Pagine</p>
     <p class="elenco_pagine">
     {PAGINAZIONE}
     </p>
    </div>
    

    La ringrazio per l'aiuto


  • User Attivo

    Ti ricordo che il file deve avere come estensione *.php.

    Comunque a stò file dovresti aggiungere altri controlli che eliminerebbero i tag html
    Poi ti posto il codice sottoforma di tabella e celle.
    Sei d'accordo?

    A presto


  • User

    Ciao!
    Ho visto il tuo guestbook ed è fatto molto bene. Anche io ne ho realizzato uno a modo mio, scrivendo su un file di testo i nuovi post che da qui vengono poi messi a video. Non so se te puoi aiutarmi ma quello che mi succede è che i caratteri che vado a visualizzare vengo sballati (questo vale per l'apostrofo le lettere accentate e le virgolette).
    Pensavo fosse un porblema di codifica ma uso utf-8 sia nel txt che nell'html.
    Riesci a darmi una mano?_Grazie!


  • User Attivo

    [..]

    ...in pochi minuti possiamo risolvere il problema dato che qui ci becchiamo una volta ogni tanto...

    Grazie 😉


  • User Attivo

    [..]

    Comunque un guestbook che realizzato ultimamente, con vari controlli e cancellazione, [..]
    Fatti sentire.


  • User Attivo

    Dato che è vietato il contatto in privato ti posto il contenuto del file index.php

    <?php
    ob_start();
    echo'
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Associazione Gianfranco Troina</title>
    <style type="text/css">
    <!--
    .style2 {
    	color: #0000CC;
    	font-family: "Comic Sans MS";
    }
    -->
    </style>
    </head>
    <STYLE TYPE="text/css">
    <!-- 
    A:link {text-decoration: none; color:#000000}
    A:visited {text-decoration: none; color:#000000; size:12; font: Verdana}
    A:hover {text-decoration: none; color:#FF0000; size:12; font: Verdana}
    -->
    </STYLE>
    <body background="gianfrancotroina.org/sfondo.gif">
    <center><img src="gianfrancotroina.org/banner.gif" /></center>
    <br />
    <div align="center">
    <table width="800" border="0">
      <tr>
        <td>
    	<table width="800" border="0">
      <tr>
        <td valign="top" width="165">
    	<table width="165" border="0">
      <tr>
        <td>
    	<table width="165" border="0">
      <tr>
        <td>
    	<table width="165" border="0">
      <tr>
        <td width="30">&nbsp;</td>
        <td width="135"><b><font face="Comic Sans MS" size="2" color="#0000CC">MENU</font></b></td>
      </tr>
    </table>
    
    	</td>
      </tr>
    </table></td>
      </tr>
    </table>
    <table width="165" border="0">
      <tr>
        <td>
    	  <table width="165" border="0">
            <tr>
              <td><div align="left">		  <a href="gianfrancotroina.org/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Homepage</b></font></a><br />
    <a href="gianfrancotroina.org/chi-era-gianfranco/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Chi era Gianfranco</b></font></a><br />
    		  <a href="gianfrancotroina.org/news/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>News</b></font></a><br />
    <a href="gianfrancotroina.org/cosa-ci-ha-lasciato/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Cosa ha lasciato</b></font></a><br />
    		  <a href="gianfrancotroina.org/obiettivi/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Obiettivi</b></font></a><br />	
    		  <a href="gianfrancotroina.org/iniziative-e-eventi/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Iniziative & Eventi</b></font></a><br />	  
    		  <a href="gianfrancotroina.org/galleria/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Galleria</b></font></a><br />		  
    		  <a href="gianfrancotroina.org/statuto/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Statuto</b></font></a><br />		  
    		  <a href="gianfrancotroina.org/guestbook/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Guestbook</b></font></a><br />		  
    		  <a href="gianfrancotroina.org/contatti/"><b><font face="Comic Sans MS" size="+2">.</font></b> <font face="Comic Sans MS" size="2,5" color="#0000CC"><b>Contatti</b></font></a><br />
    </div>
    		  </td>
            </tr>
          </table>	
    <table width="155" border="0">
      <tr>
        <td>
    	<table bgcolor="#FFFFFF" width="155" border="0">
      <tr>
        <td><center><img src="gianfrancotroina.org/angeli-per-un-giorno.gif" /></center></td>
      </tr>
    </table>
    <table width="155" border="0">
      <tr>
        <td>	<embed width="155" height="50" src="gianfrancotroina.org/canzoni/ilmiopensiero.mp3" autostart="true" /></td>
      </tr>
    </table>
    
    	</td>
      </tr>
    </table>
    
    	  </td>
      </tr>
    </table>
    	</td>
    	
    	
    	
        <td valign="top" width="605">
    	<table width="635" border="0">
      <tr>
        <td><div style="width: 635px; 
    height: 400px; 
    overflow: auto; 
    scrollbar-3dlight-color : #ECD3D3; 
    scrollbar-arrow-color : #40120F; 
    scrollbar-base-color : #B65858;">
    <center>
    	<br />';
    //
    // VALORI MODIFICABILI
    //
    
    // MESSAGGI PER PAGINA
    $messaggi_xpag = 20;
    
    // STILE CHE VIENE USATO COME PREDEFINITO
    $stile_base = "base.css";
    
    
    //
    // NON MODIFICARE NULLA SOTTO QUESTA RIGA!!
    //
    
    session_start();
    
    require_once("config.inc.php");
    require_once("function.php");
    
    $output = template("header.tpl");
    $output = template("index.tpl", $output);
    $output = template("footer.tpl", $output);
    
    $completo = "";
    
    $fp = fopen("messaggi.txt", 'r');
    @flock($fp, LOCK_EX);
    $content = fread($fp, filesize("messaggi.txt"));
    
    $messaggi = explode("### Nuovo messaggio ###", $content );
    
    @flock($fp, LOCK_UN);
    fclose($fp);
    
    $messaggi_tot = count($messaggi) - 1;
    $pagine_tot = ceil ( $messaggi_tot / $messaggi_xpag );
    $pagina = get_page($pagine_tot);
    
    if ($pagina==1) { $output = hidepart("CAMPO PAGINA", $output); }
    
    $output = preg_replace("#{PAGINA_CORRENTE}#si", $pagina, $output); 
    
    $start = $messaggi_tot - ( ($pagina - 1) * $messaggi_xpag );
    $end = ($start - $messaggi_xpag < 1) ? 0 : $start - $messaggi_xpag;
    
    $parti = explode("<!-- CICLO MESSAGGI -->", $output);
    $ciclo = $parti[1];
    for ($x=$start; $x > $end; $x=$x-1)
    {
     $completo .= $ciclo;
     $parti_messaggio = explode("#p#", trim($messaggi[$x]) );
     $completo = preg_replace("#{NICK}#si", view_nick($parti_messaggio[1]), $completo);
     $completo = preg_replace("#{DATA_ORA}#si", date("d/m/Y G:i", $parti_messaggio[2]), $completo);
     $completo = preg_replace("#{TESTO}#si", view_text($parti_messaggio[3]), $completo);
     $completo = preg_replace("#{MEX_ID}#si", $x, $completo);
    }
    $output = ciclo_sub("MESSAGGI", $completo, $output);
    
    $output = preg_replace("#{PAGINAZIONE}#si", create_pagination($pagine_tot, $pagina), $output);
    
    $stile = ( (isset($_GET['stile'])) AND (file_exists("stile/".$_GET['stile'])) ) ? $_GET['stile'] : $stile_base;
    $output = preg_replace("#{FILE_STILE}#si", $stile, $output); 
    
    
    $parti = explode("<!-- CICLO STILI -->", $output);
    $ciclo = $parti[1];
    $completo = "";
    foreach (glob("stile/*.css") as $filename)
    {
     $completo .= $ciclo;
     $stile_file = substr($filename, 6);
     $stile_nome = str_replace("_", " ", substr(substr($filename, 6), 0, -4 ) );
     $completo = preg_replace("#{STILE_FILE}#si", $stile_file, $completo);
     $selected = ($stile_file == $stile) ? " selected=\"selected\"" : "";
     $completo = preg_replace("#{STILE_SELECTED}#si", $selected, $completo);
     $completo = preg_replace("#{STILE_NOME}#si", $stile_nome, $completo);
    }
    $output = ciclo_sub("STILI", $completo, $output);
    
    $output = preg_replace("#{QSTRING}#si", qstring_remove("delete"), $output);
    
    if ( (!isset($_SESSION['pugiabook_admin'])) OR ($_SESSION['pugiabook_admin']!=md5($admin_password)) )
    {
     $output = hidepart("admin", $output);
    }
    else
    {
     $output = hidepart("admin_login", $output);
    }
    
    echo $output;
    echo '
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    		</td>
      </tr>
    </table>
    	
    	</center>
    	<br />
    	<br />	
    	</div>
    	</td>
      </tr>
    </table>
    	</td>
      </tr>
    </table>
    
    
    	</td>
      </tr>
    </table>
    
    	
    	</td>
      </tr>
    </table>
    
    </div>
    </body>
    </html>';
    ?>
    

    Ti prego aiutami la situazione sta diventando insostenibile.