Pagina 1 di 21 1 2 3 11 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 205
  1. #1
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858

    [PILLOLA] introduzione a captcha nei form HTML

    Ciao a tutti, avete mai sentito parlare di "captcha" (Rif.1)?? Essa rappresenta l'acronimo di "completely automated public Turing test to tell computers and humans apart", ovvero la capacità di distinguere l'utente dal robot in base alla sua capacità di riconoscere, in una immagine, un testo scritto con caratteri di fantasia, continuamente diversi, e modificati con l'aggiunta di rumore casuale. (Rif.2)

    Queste poche righe di codice rappresentano un primo approccio, forse minimo, al problema in oggetto. Sono disponibili infatti in rete molte classi, con un numero maggiore di funzioni, riguardarti i captcha.

    Da notare inoltre come questo tipo di controlli introduca dei problemi di accessibilità nei confronti di alcuni utenti (Rif.3).






    --------------------------
    riferimenti sul web:
    Rif.1 -> http://www.captcha.net/
    Rif.2 -> http://www.webegg.it/ita/capireilfut...bergadano8.htm
    Rif.3 -> http://www.linux.it/~claudio/w3c/TR/turingtest/


    --------------------------
    file prova.php

    codice:
    <?php
    error_reporting(E_ALL);
    require_once('captcha.class.php');
    session_start();
    $captcha=new captcha();
    $act=isset($_GET['act']) ? $_GET['act'] : '';
    switch($act):
    	case('img'):
    		$captcha->offuscamento=3;
    		$captcha->genera($_GET['stringa']);	
    	break;
    	case('check'):
    		if($_SESSION['stringa'] == $_POST['codice']){
    			echo 'nome: '.$_POST['nome'];
    			echo '
    ';
    			echo 'cognome: '.$_POST['cognome'];
    		} else
    			echo 'Il codice non corrisponde all\'immagine';
    	break;
    	default:
    		$stringa=$captcha->stringa_casuale();
    		$_SESSION['stringa']=$stringa;
    		echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'?act=check">
    		<ul style="list-style: none;">
    		[*]nome: <input type="text" name="nome" />
    		[*]cognome: <input type="text" name="cognome" />
    		[*]codice: [img]'.$_SERVER['PHP_SELF'].'?act=img&stringa='.$stringa.'[/img]
    		[*]inserisci il codice: <input type="text" name="codice" />
    		[*]<input type="submit" name="invia" value="invia" />
    		[/list]
    		</form>';	
    	break;
    endswitch;
    ?>

    --------------------------
    file captcha.class.php
    codice:
    <?php
    // Marco Barcaro
    // 22/03/2005
    //
    // questa classe richiede le librerie grafiche GD
    //
    // Testato con Apache 1.3.33, PHP 4.3.10, GD 2.0.28 su winXP
    
    class captcha {
    
    	var $offuscamento = '';
    
    	function captcha(){
    		$this->x=110;
    		$this->y=30;
    		$this->font='arial.ttf';
    		$this->dimensione=20;		
    	}
    
    	function stringa_casuale(){
    		return chr(rand(65,90)) . chr(rand(65,90)) . chr(rand(65,90)) . chr(rand(65,90)) . chr(rand(65,90));
    	}
    
    	function genera($stringa){
    		$im=imagecreate($this->x,$this->y);
    		$bianco=imagecolorallocate($im, 255, 255, 255);
    		$nero=imagecolorallocate($im, 0, 0, 0);
    		$box=imagettfbbox($this->dimensione, 0, $this->font, $stringa);
    		imagettftext($im, $this->dimensione, 0, 5, 5+abs($box[5]), $nero, $this->font, $stringa);
    		$this->offuscamento=$this->offuscamento != NULL ? $this->offuscamento : 0;
    		$max=ceil(($this->x * $this->y * $this->offuscamento) / 30);
    		for($i=0;$i<$max;$i++){
    			$temp_x=rand(1,$this->x);
    			$temp_y=rand(1,$this->y);
    			imageline ($im, $temp_x, $temp_y, $temp_x, $temp_y, $nero);
    		}
    		for($i=1;$i<$this->y;$i=$i+10){
    			imageline ($im, 0, $i, $this->x, $i+5, $nero);		
    		}
    		for($i=1;$i<$this->x;$i=$i+10){
    			imageline ($im, $i, 0, $i+5, $this->y, $nero);		
    		}		
    		header("content-type: image/jpeg");
    		imagejpeg($im,"",80);
    		imagedestroy($im);	
    	}
    }
    ?>
    think simple think ringo

  2. #2
    Utile ma a me invece dell'immagine mostra solo il testo dell'alt.

  3. #3
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    [supersaibal]Originariamente inviato da mircov
    Utile ma a me invece dell'immagine mostra solo il testo dell'alt. [/supersaibal]
    ciao, nn funzia perchè bisogna copiare il font arial.ttf (o altro font a scelta dell'utente) nella cartella dello script, oppure specificare il percorso del font scelto con la variabile $this->font='arial.ttf';



    think simple think ringo

  4. #4
    L'ho copiato ma cmq non funziona!

  5. #5
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    [supersaibal]Originariamente inviato da mircov
    L'ho copiato ma cmq non funziona! [/supersaibal]
    le librerie GD sono ok?? prova a puntare direttamente sul browser l'immagine...
    think simple think ringo

  6. #6
    Ciao..

    Sbaglio o nel file di prova hai pasticciato un po' con le apici singole e doppie???

    per esempio a partire dalla riga 18 del file prova.php in giu'...

    :master:

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    [supersaibal]Originariamente inviato da piero.mac
    Ciao..

    Sbaglio o nel file di prova hai pasticciato un po' con le apici singole e doppie???

    per esempio a partire dalla riga 18 del file prova.php in giu'...

    :master: [/supersaibal]
    il forum ha tolto la \ prima dell'apice..se quoti il messaggio vedi che ho scritto giusto
    think simple think ringo

  8. #8
    Ho comunque modificato perche' non amo usare le apici singole a quel modo.

    il problema e' che non rende l'immagine.

    http://127.0.0.1/marketto/captcha.php?stringa=NKSMN

    Questo dovrebbe essere l'immagine ???? Ci saranno altri slash rimossi... ???


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    da me funziona alla grande, ovvero:
    http://localhost/prova.php?act=img&stringa=YGTMH

    corrisponde a:



    think simple think ringo

  10. #10
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    [supersaibal]Originariamente inviato da piero.mac
    Questo dovrebbe essere l'immagine ???? Ci saranno altri slash rimossi... ???

    [/supersaibal]
    il font l'hai copiato???
    think simple think ringo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.