+ Rispondi alla Discussione
Risultati da 1 a 8 di 8

Guestbook in php con Anti-Spam

Ultimo Messaggio di ottovolante il:
  1. #1
    User Newbie
    Data Registrazione
    Jun 2006
    Messaggi
    9

    Guestbook in php con Anti-Spam

    Salve a tutti,
    nel mio sito ho inserito un guestbook che viene di continuo riempito a mai finire di fastidiopsissimi messaggi spam chilometrici.

    Vorrei inserire quelle immagini col codice da inserire, come posso fare?
    Grazie

  2. #2
    Utente Premium
    Data Registrazione
    Jan 2006
    Localit
    L'Aquila
    Messaggi
    247
    ciao,

    stai parlando dei captcha. ci dovrebbe essere una libreria ad hoc per php. una breve guida la trovi qui

  3. #3
    User
    Data Registrazione
    Jan 2006
    Messaggi
    45
    Salve a tutti, io sono riuscito a risolvere il problema molto semplicemente, ma prima cerchiamo di capire perch ci sono questi spam.
    Dunque sono riuscito a capire, che queste persone che inviano questi messaggi di spam, usano dei programmi che ricercano sui motori di ricerca il form per inviare i messaggi, sia sul guestbook che sui form per i contatti, siccome gestisco pi di un sito ho fatto delle prove negli utlimi mesi e udite udite, non ho pi messaggi di spam sui miei guestbook. Torniamo all'esempio precedente:

    1) Dunque noi installiamo un guestbook sul sito, ovviamente noi lo inseriamo in una cartella che solitamente chiamiamo guestbook.........sbagliato!!! Mai usare questo termine, infatti se cercate su qualsiasi motore di ricerca la parola guestbook ne escono a centinaia, e chi fa questo di mestire alla fine vi trova anche il form di invio dei messaggi, lo memorizza nel suo programma di invio messaggi ed il vostro bel guestbook inizia a ricevere spam.
    2) Il form di invio messaggi non deve essere raggiungibile attraverso un link in html ma con un bottone in javascript, questo per il semplice motivo che i motori di ricerca non devono assolutamente indicizzare la pagina di invio dei messaggi, questa una sicurezza superiore alle pagine create per antispam.
    3) Nel tag <title> della pagina di invio messaggi non mettete mai una parola che ricorda il guestbook ma mettete una qualsiasi altra parola, come nel resto dei file.
    4) A questo punto mettete il vostro guestbook in rete, state tranquilli che i messaggi di spam scompariranno e non ne riceverete pi.
    5) Se ne trovate qualcuno perch avete detto ai vostri amici che il vostro guestbook non riceve pi gli spam gli avete indicato l'indirizzo esatto del guestbook e vi hanno fatto un terribile scherzo.
    Provare per credere, a volte le soluzioni pi semplici sono le migliori.
    Fatemi sapere.
    Buona giornata.

  4. #4
    User
    Data Registrazione
    Feb 2007
    Messaggi
    20
    Ciao e scusate se riprendo questo topic abbastanza vecchio ma veramente mi interessava l'argomento.
    Secondo voi al posto del javascript per il link, se si una un tasto in flash il risultato pu essere lo stesso o la pagina per scrivere il messaggio pu essere "intercettata" dai motori di ricerca!
    Grazie a tutti per la risposta!

  5. #5
    User
    Data Registrazione
    Oct 2006
    Messaggi
    292
    Prova con questo:

    <?php
    // MI RICAVO UN CODICE ALFANUMERICO CASUALE COMPOSTO DA 6 CARATTERI minuscoli e/o MAIUSCOLI
    $str = '';
    for ($i=1; $i<=6; $i++)
    {
    $set = array(rand (65,90),rand(97,122),rand(48,57));
    $str .= chr($set[rand(0,2)]);
    }
    echo $str;
    ?>

    poi mettere un campo nel form per confermare il codice e all'invio confrontarlo.

  6. #6
    User
    Data Registrazione
    Feb 2007
    Messaggi
    20
    Citazione Originariamente Scritto da mikslap Visualizza Messaggio
    Prova con questo:

    <?php
    // MI RICAVO UN CODICE ALFANUMERICO CASUALE COMPOSTO DA 6 CARATTERI minuscoli e/o MAIUSCOLI
    $str = '';
    for ($i=1; $i<=6; $i++)
    {
    $set = array(rand (65,90),rand(97,122),rand(48,57));
    $str .= chr($set[rand(0,2)]);
    }
    echo $str;
    ?>

    poi mettere un campo nel form per confermare il codice e all'invio confrontarlo.
    Ti ringrazio per il consiglio...era proprio quello che cercavo...un codice di verifica.
    Unico problema che non so mettere mani al php...Un guest da istallare s...ma fare modifiche non sono pratico.
    Mi potresti aiutare in qualche modo se ti facessi vedere il sorgente del mio guest?

  7. #7
    User
    Data Registrazione
    Oct 2006
    Messaggi
    292
    Postami il codice e provo a vedere

  8. #8
    User
    Data Registrazione
    Feb 2007
    Messaggi
    20
    Citazione Originariamente Scritto da mikslap Visualizza Messaggio
    Postami il codice e provo a vedere
    questa la index 1100.php

    <?
    include("config.php");
    $file=fopen($firme,"r") or die("<br><br>Errore in lettura del database");
    $totMex=count(file($firme));
    $totPag=ceil($totMex/$risul_pagina);
    if (!(isset($_GET['qpag']))){
    $qpag=1;
    }else{
    $qpag=$_GET['qpag'];
    }
    $qpag=$qpag;
    $i=0;
    $k=0;
    $z=0;

    if (isset($qpag) AND $qpag > 0){
    if ($qpag > $totPag) {
    $qpag = $totPag;
    } else {
    $iniz=$qpag*$risul_pagina - $risul_pagina;
    }
    } else {
    $qpag = 1;
    $iniz = 0;
    }
    $pagina_pre = $qpag - 1;
    $pagina_seg = $qpag + 1;
    if ($pagina_pre < 1) {
    $pagina_pre = 1;
    }
    if ($pagina_seg > $totPag){
    $pagina_seg = $totPag;
    }
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <style>
    .Guest {
    font-family:Verdana;
    font-size-small;
    }
    a:link {
    text-decoration: none;
    color: <? echo $colorFi?>;
    }
    a:visited {
    text-decoration: none;
    color: <? echo $colorFi?>;
    }
    a:hover {
    text-decoration: none;
    color: <? echo $colorFi?>;
    }
    a:active {
    text-decoration: none;
    color: <? echo $colorFi?>;
    }
    .TesTit {
    font-family:<? echo $fontfamilyT?>;
    font-size: <? echo $fontsizeT?>;
    <? echo $fontweightT?>;
    color:<? echo $colorT?>;
    }
    .TesPeF {
    font-family:<? echo $fontfamilyPeF?>;
    font-size: <? echo $fontsizePEF?>;
    <? echo $fontweightPEF?>
    color:<? echo $colorPEF?>;
    }
    .ModFirm {
    font-family:<? echo $fontfamilyF?>;
    font-size: <? echo $fontsizeF?>;
    <? echo $fontweightF?>
    color:<? echo $colorF?>;
    }
    .Firme {
    font-family:<? echo $fontfamilyFi?>;
    font-size: <? echo $fontsizeFi?>;
    color:<? echo $colorFi?>;
    }
    .Stile1 {font-size: x-small}
    </style>
    <title>Millecento Blues Mobile</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_openBrWindow(theURL,winName,features) { //v2.0
    window.open(theURL,winName,features);
    }
    function MM_findObj(n, d) { //v4.01
    var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); return x;
    }
    function MM_validateForm() { //v4.0
    var i,p,q,nm,test,num,min,max,errors='',args=MM_valida teForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
    if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
    if (p<1 || p==(val.length-1)) errors+='- Indirizzo E-mail non valido.\n';
    } else if (test!='R') { num = parseFloat(val);
    if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
    if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
    min=test.substring(8,p); max=test.substring(p+1);
    if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' obbligatorio.\n'; }
    } if (errors) alert(''+errors);
    document.MM_returnValue = (errors == '');
    }
    //-->
    </script>
    </head>
    <script language="javascript">
    function controlla() {
    document.onkeypress = keyhandler;
    }
    function keyhandler(e) {
    if (document.layers){
    Key = e.which;
    }else{
    Key = window.event.keyCode;
    } if(Key==124){
    window.event.keyCode="";
    //alert(Key);
    }
    }
    function controllaNo() {
    document.onkeypress = keyhandlerq;
    }
    function keyhandlerq(e) {
    if (document.layers){
    Key = e.which;
    }else{
    Key = window.event.keyCode;
    } if(Key==124){
    window.event.keyCode="";
    //alert(Key);
    }
    }
    </script>
    <body bgcolor="<? echo $sfondo_pag?>">
    <table width="<? echo $largTabella?>" border="0" align="center">
    <tr>
    <td width="668" height="88" valign="top" bgcolor="<? echo $sfondoTabT?>"><table width="0" border="0">
    <tr>
    <td width="603"><div align="center" class="TesTit"><? echo $titolo_guest?></div></td>
    </tr>
    <tr>
    <td height="65" valign="middle"><div align="center" class="TesPeF">Tot Messaggi: <strong><? echo $totMex; ?> </strong> - Tot Pagine: <strong><? echo $totPag;?></strong></div></td>
    </tr>
    </table></td>
    </tr>
    <tr bgcolor="<? echo $sfondoTabF?>">
    <td class="ModFirm"> <form action="scrivi.php" method="post" name="form1" onSubmit="MM_validateForm('Nome','','R','Citta','' ,'R','Email','','NisEmail','Mex','','R');return document.MM_returnValue">
    <table width="0" border="0" align="center">
    <tr>
    <td>*Nome:</td>
    <td>
    <input name="Nome" type="text" onFocus="controllaNo()" size="20" style="font-size: 10px; font-family:Verdana"></td>
    <td>*Citt&agrave;:</td>
    <td>
    <input name="Citta" type="text" id="Citta" onFocus="controllaNo()" size="20" style="font-size: 10px; font-family:Verdana"></td>
    <td>Nazione:</td>
    <td>
    <input name="Nazione" type="text" id="Nazione" onFocus="controllaNo()" size="20" style="font-size: 10px; font-family:Verdana"></td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>WebSite:</td>
    <td>
    <input name="Website" type="text" id="Website" onFocus="controllaNo()" size="20" style="font-size: 10px; font-family:Verdana"></td>
    <td>E-mail:</td>
    <td>
    <input name="Email" type="text" id="Email" onFocus="controllaNo()" size="20" style="font-size: 10px; font-family:Verdana"></td>
    <td>*Messaggio:</td>
    <td> <textarea name="Mex" cols="20" id="Mex" style="font-size: 10px; font-family:Verdana" onFocus="controlla()"></textarea> </td>
    <td> <br> </td>
    </tr>
    </table>
    <div align="center">
    <input type="submit" value="Firma" name="invia" style="font-size: 10px; font-family:Verdana">
    <input name="invia2" type="button" style="font-size: 10px; font-family:Verdana" onClick="MM_openBrWindow('smiles.php','','scrollba rs=yes,width=200,height=220')" value="Smiles">
    </div>
    </form></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    </tr><? if ($totMex != 0) {?>
    <tr>
    <td><?
    while(!feof($file)) {
    $riga=fgets($file,10000);
    $arraF[$k]=$riga;
    $k=$k+1;
    }
    $omexpag=array_reverse($arraF);
    $omexpag=array_slice($omexpag,$iniz,$risul_pagina) ;
    $k=0;
    while ($k < count($omexpag)) {
    $cont=explode("|",$omexpag[$k]);
    while ($i < 7) {
    $ID=$cont[0];
    $Nome=$cont[1];
    $Citta=$cont[2];
    $Nazione=$cont[3];
    $Web=$cont[4];
    $Mail=$cont[5];
    $Mex=ereg_replace(":::","<img border='0' src='smiles/",$cont[6]);
    $Mex=ereg_replace("::",".gif'>",$Mex);
    $data=$cont[7];
    $i=$i+1;
    }
    ?><table width="0" border="0" cellpadding="0" cellspacing="0" class="Firme">
    <tr>
    <td width="667" height="15" bgcolor="<? echo $sfondoTabFiS?>" style="border: 1px solid #C0C0C0"><strong> &nbsp;<? echo $Nome?></strong> da <strong><? echo $Citta?>, <? echo $Nazione?> &nbsp;
    </strong></td>
    </tr>
    <tr>
    <td height="60" bgcolor="<? echo $sfondoTabFiG?>">&nbsp;
    <table width="0" border="0">
    <tr>
    <td><? echo $Mex?></td>
    </tr>
    </table></td>
    </tr>
    <tr>
    <td height="15" bgcolor="<? echo $sfondoTabFiG?>"><div align="right" class="Firme"><strong>
    <? if ($Mail!="") {?>
    <a href="mailto:<? echo $Mail?>">[@mail]</a>
    <? }?>
    <? if ($Web!="") {?>

    <? if ("1".strpos($Web,"http://") > 1) {?>

    <a href="<? echo $Web?>">[www]</a>

    <? } else {?>

    <a href="<? echo "http://".$Web?>">[www]</a>

    <? } }?>

    [<? echo $data;?>] </strong> </div></td>
    </tr>
    </table>
    <br>
    <?
    $i=0;
    $k=$k+1;
    }
    fclose($file);
    ?>
    <table width="0" border="0" align="center" class="Firme">
    <tr>
    <td><? if (!($qpag == 1)){
    if (!($totPag == 0)){ echo "<a href=\"1100.php?qpag=$pagina_pre\">[Indietro]"; }} ?>
    <? if (!($qpag == $totPag)){
    if (!($totPag == 0)){ echo "<a href=\"1100.php?qpag=$pagina_seg\">[Avanti]"; }}?>
    </td>
    </tr>
    </table></td>
    </tr><? }?>
    </table>
    </body>
    </html>


    Questa la pagina scrivi.php

    <?
    include("config.php");
    $data=date("d/m/Y");
    $orario=date("H.i");
    $file=fopen($contatore, "r") or die("Errore di connessione al contatore");
    $ID=fgets($file,10000);
    fclose($file);
    $file=fopen($contatore, "w+") or die("Errore di connessione al contatore");
    fwrite($file,$ID+1);
    fclose($file);
    $file=fopen($contatore, "r") or die("Errore di connessione al contatore");
    $ID=fgets($file,7168);
    fclose($file);
    $file=fopen($firme, "a+t") or die("Errore di connessione al database");
    $num=count(file($firme));
    if ($num != 0) {
    $capo="\n";
    }else {
    $capo="";
    }
    $mess=ereg_replace("\n","<br>",$_POST['Mex']);
    fwrite($file,$capo.$ID."|");
    fwrite($file,$_POST['Nome']."|");
    fwrite($file,$_POST['Citta']."|");
    fwrite($file,$_POST['Nazione']."|");
    fwrite($file,$_POST['Website']."|");
    fwrite($file,$_POST['Email']."|");
    fwrite($file,$mess."|");
    fwrite($file,$data." ".$orario."|");
    fclose($file);
    ?>
    <script language="javascript">
    document.location.href="1100.php";
    </script>


    Ti ringrazio!

+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] Attivato
  • Il codice [VIDEO] Attivato
  • Il codice HTML Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.