• User Newbie

    §Form php...invaso dallo spam

    :mmm: Ho un problema con un form php presente sul mio sito http://www.collieuganei.biz/prenota_la_tua_vacanza.php. Da qualche giorno a questa parte ricevo almeno una ventina di mail spam provenienti da questo form che viene automaticamente compilato e spedito... Esiste un modo per evitare ciò? C'è un qualche script da implementare per evitare che venga riempito di porcherie?
    Alcuni siti prevedono la copia di un numero casuale generato con immagini: funziona?! In caso, come si realizza?!

    Grazie mille!


  • Super User

    Certo che funziona...se nn si immette il codice di verifica il msg nn viene inviato.
    Trovi una guida php su come realizzarlo qui:
    http://www.0x01.org/blog/?p=37


  • User

    Certo che funziona...
    ma un disabile visivo non potrà mai prenotare la vacanza.
    🙂


  • ModSenior

    non vedo come possa un disabile visivo compilare un form anche senza codice.


  • User Attivo

    con uno screen reader ...


  • User

    Il "lol" finale è davvero di pessimo gusto.
    Ti faccio ridere ancora di più se ti dico che a tutt'oggi, il più diffuso screen reader costa più di 1000 Euro?


  • Super User

    Invito tutti a provare l'estrema goduria del navigare un sito con uno screen reader. 😞
    Spesso anche un sito fatto bene è difficile, quindi un piccolo sforzo per migliorare la qualità e la navigazione per tutti non mi pare una brutta idea 🙂


  • Community Manager

    Chiedo scusa a nome del Forum per il comportamento di Thedarkita. L'utente è stato bannato per 7 giorni in modo che possa capire la gravità di quello che ha detto e possa riflettere, prima di tornare a postare in un forum come questo.


  • Community Manager

    Ragazzi, volevo sapere una cosa.

    Per bloccare le spam se mettessimo un bloccaspam matematico?

    Cioè, genera due numeri normali non con immagini e per passare il commento si deve fare la somma?

    Tipo: 2 + 3= ?

    Se non sbaglio c'è qualcosa di simile nel web, non ricordo il blog dove l'ho letto, forse da Weppos 🙂


  • Super User

    sì, se la somma non è complessa a mio avviso sarebbe una buona idea.
    però sempre sul genere numero_inferiore_a_dieci_1 + numero_inferiore_a_dieci_2 = somma


  • Community Manager

    Yes, una cosa di quel tipo, tanto lo spam automatico lo fermerebbe uguale 🙂


  • User

    Questa soluzione è sicuramente migliore dell'immagine con il testo distorto. 🙂

    Resta però, il problema della risposta casuale che può fornire il robot.


  • Super User

    Ottima idea Giorgio...come ho fatto a nn pensarci? 🙂
    La integro subito nel mio sito e poi se ho tempo posto il relativo codice php...


  • User

    Quando hai integrato... fai un fischio,
    son curiosa di provare 🙂


  • Moderatore

    Se non sbaglio c'è qualcosa di simile nel web, non ricordo il blog dove l'ho letto, forse da Weppos
    Era se non sbaglio un messaggio di brag, sul gt forum. 🙂

    Lui l'ha integrato in questo modo:
    http://www.studiamo.it/forum/profile.php?mode=register&agreed=true

    (nota il Qual è il nome della capitale d'Italia?: * ) 🙂


  • Super User

    Ho creato lo script (funziona,molto carino :D)
    Per cominciare ho creato la pagina verifica.php e ho messo al suo interno il seguente codice:

    [php]
    <?php /* Alcuni parametri configurabili / $boxW=128; // Larghezza immagine $boxH=32; // Altezza immagine $codelen=6; // Lunghezza del codice $snow=4; // effetto neve 0=no, o intero % copertura / Dichiara che lo stream trasmesso �un file immagine PNG / header("Content-Type: image/png"); / inizializza il generatore di numeri casuali / srand((double)microtime()1000000); session_start(); / Crea un codice di verifica casuale e lo immagazzina nella sessione in modo che processform.php possa recuperarlo / $num1=rand(0,10); $num2=rand(0,10); $somma=$num1+$num2; $string="$num1 + $num2"; $_SESSION[somma] = $somma; / Creazione immagine di dimesioni $boxW x $boxH / $im = ImageCreate($boxW, $boxH); / Colori / $white = ImageColorAllocate($im, 255, 255, 255); $black = ImageColorAllocate($im, 0, 0, 0); / Riempie lo sfondo di nero / ImageFill($im, 0, 0, $black); / seleziona un font a caso tra quelli di sistema / $font=rand(3,5); / Calcola ampiezza scritta / $w=strlen($string)ImageFontWidth($font); $h=ImageFontHeight($font); / Posizione casuale / $x=rand(1,($boxW-$w-1)); $y=rand(1,($boxH-$h-1)); / scrive nell'immagine la stringa di controllo / ImageString($im, $font, $x, $y, $string, $white); / output al browser/ ImagePNG($im); / Distruggo l'immagine in memoria */ ImageDestroy($im); ?>[/php]
    Poi nella pagina che deve verificare la corretta digitazione,ho messo:

    [php]
    <?
    session_start(); ?> <form action='' method='POST'>
    <img src='verifica.php'>
    <br> Scrivi nello spazio sottostante la somma tra i numeri sopra visualizzati:<br>
    <input type='text' name='vercode'> <br><br> <input type='submit' value='Invia'>

    <input type='hidden' name='clicked'> <? if (isset($_POST[clicked])){
    if($_POST[vercode] == $_SESSION[somma]){echo "<br><br><font color='green'>Ok,il codice inserito è esatto</font>";}else{ echo "<br><br><font color='red'>Il numero digitato non corrisponde alla somma dei numeri dati</font>";}} ?>
    [/php]


  • Super User

    Ho creato anche un'altra versione dello script per chi ha le sessioni disabilitate sul server però nn so se funziona...

    [php]
    <?php

    /* Alcuni parametri configurabili */
    $boxW=128; // Larghezza immagine
    $boxH=32; // Altezza immagine
    $codelen=6; // Lunghezza del codice
    $snow=4; // effetto neve 0=no, o intero % copertura

    /* Dichiara che lo stream trasmesso �un file immagine PNG */
    header("Content-Type: image/png");

    /* inizializza il generatore di numeri casuali */
    srand((double)microtime()*1000000);
    $num1=rand(0,10);
    $num2=rand(0,10);
    $somma=$num1+$num2;
    $string="$num1 + $num2";

    /* Creazione immagine di dimesioni $boxW x $boxH */
    $im = ImageCreate($boxW, $boxH);

    /* Colori */
    $white = ImageColorAllocate($im, 255, 255, 255);
    $black = ImageColorAllocate($im, 0, 0, 0);

    /* Riempie lo sfondo di nero */
    ImageFill($im, 0, 0, $black);

    /* seleziona un font a caso tra quelli di sistema */
    $font=rand(3,5);

    /* Calcola ampiezza scritta */
    $w=strlen($string)*ImageFontWidth($font);
    $h=ImageFontHeight($font);

    /* Posizione casuale */
    $x=rand(1,($boxW-$w-1));
    $y=rand(1,($boxH-$h-1));

    /* scrive nell'immagine la stringa di controllo */
    ImageString($im, $font, $x, $y, $string, $white);

    /* output al browser*/
    ImagePNG($im);

    /* Distruggo l'immagine in memoria */
    ImageDestroy($im);

    ?>[/php]
    [php]
    <form action='' method='POST'>
    <?
    include("verifica.php");
    ?>
    <br> Scrivi nello spazio sottostante la somma tra i numeri sopra visualizzati:<br>
    <input type='text' name='vercode'> <br><br> <input type='submit' value='Invia'>

    <input type='hidden' name='clicked'> <? if (isset($_POST[clicked])){
    if($_POST[vercode] = $somma){echo "<br><br><font color='green'>Ok,il codice inserito è esatto</font>";}else{ echo "<br><br><font color='red'>Il numero digitato non corrisponde alla somma dei numeri dati</font>";}} ?> [/php]


  • User

    Altra cosa da non trascurare nell'implementazione di form,
    è quella di associare in maniera esplicita le etichette ai rispettivi controlli,
    in modo che anche il cieco assoluto possa compilare facilemente il modulo.
    Questa cosa è molto molto importante.
    🙂


  • User Newbie

    Sto' cercando di rendere accessibili due form d'iscrizione che come sistema antibot attualmente usano un visual captcha, ma che è un ostacolo insormontabile per i non vedenti. Ho trovato anche degli audio visual captcha, ma mi sembrano eccessivamente complicati.
    Poichè su un forum PhpBB e su un guestbook ho adattato degli script dedicati semplicissimi già pronti che usano il sistema della domanda "veramente facile" (tipo: qual'è la capitale d'Italia) ed un campo in cui inserire la risposta che viene confrontata con quella inserita, pensavo di adottare un sistema simile anche sui form, ma fino ad ora non sono riuscito a trovare uno script già pronto.
    Avete qualche suggerimento/link oppure qualche idea su soluzioni diverse.
    Grazie in anticipo


  • Community Manager

    Grandi ragazzi 🙂

    devo cambiare la mia soluzione di vBulletin, non penso sia il massimo attualmente. Appena finirò con tutte le cose partirò con un progetto sull'accessibilità ed usabilità di questo Forum, per migliorarlo al massimo 🙂