Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525

    captcha -> richiamare immagine per nome

    Ho trovato questo codice che genera automaticamente immagini captcha. Quello che vorrei è che non venisse inviato l'header come header("Content-type: image/jpeg"); ma poter richiamare l'immagine con il nome di un file, come una classica pagina .html .... si può fare???
    Thx

    Codice PHP:

    <?php 
    //http://forum.html.it/forum/showthread.php?s=&threadid=1145418&highlight=captcha

    //Captca-image 

    session_start(); 

    if (empty(
    $_SESSION['rand_code'])){ 
    $str ""
    $length 0
    $caratteri "abcdefghijkmnpqrstuvwxyz123456789";  /* Caratteri che appaiono come immagine */ 

    for ($i 0$i 5$i++){          /* il 5 indica il numero di caratteri-immagine che appaiono */ 
    $str .= $caratteri{rand(0,34)};     // genera un numero casuale tra 0 e 32 per una stringa di lunghezza variabile da 3 a 5 cifre 

    /*
    for ($i = 0; $i < 5; $i++){          // il 5 indica il numero di caratteri-immagine che appaiono 
        $str .= $caratteri{rand(0,32)}; // genera un numero casuale tra 0 e 32 per una stringa di lunghezza costante di 5 cifre
        echo "
    str  ".$str;

    */

    $_SESSION['rand_code'] = $str

    $imgX 60;//Sposta a dx i caratteri-immagine 
    $imgY 18;//Sposta in alto i caratteri-immagine 
    $image imagecreatetruecolor(6020); 
    $backgr_col imagecolorallocate($image238,239,239);//Colore di sfondo 
    $border_col imagecolorallocate($image208,208,20);//Colore del bordo 
    $text_col imagecolorallocate($image46,60,31);//Colore dei caratteri-immagine 

    imagefilledrectangle($image006020$backgr_col);//Cambiando i 4 valori appare un'ombra nera e si può creare un'effetto rilievo o incassato del rettangolo   
    imagerectangle($image005919$border_col);// Sposta il bordino colorato del rettangolo 

    $font "courbi.ttf"
    $font_size 14;//Dimensione dei caratteri-immagine 
    $angle 0;//Ruota obliqui i caratteri-immagine 
    $box imagettfbbox($font_size,$angle,$font,$_SESSION['rand_code']); 
    $x = (int)($imgX $box[4]) / 2;//Sposta a sx i caratteri-immagine 
    $y = (int)($imgY $box[5]) / 2;//Sposta in alto i caratteri-immagine 
    imagettftext($image,$font_size,$angle,$x,$y,$text_col,$font,$_SESSION['rand_code']); 

    header("Content-type: image/jpeg"); 
    imagejpeg($image); 

    imagedestroy ($image); 

    //Fine Captca-image 

    ?> 

    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    [img]captca-image.php[/img]Scrivi il codice<input type="text" name="validator" id="validator" />     
    </body>
    </html>

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: captcha -> richiamare immagine per nome

    Originariamente inviato da Simoxxx
    Ho trovato questo codice che genera automaticamente immagini captcha. Quello che vorrei è che non venisse inviato l'header come header("Content-type: image/jpeg"); ma poter richiamare l'immagine con il nome di un file, come una classica pagina .html .... si può fare???
    Il "Content-type: image/jpeg" lo devi per forza mandare, non puoi farne a meno. Altrimenti il browser non saprebbe come interpretare lo stream di dati.

    Se vuoi "nascondere" il fatto che per avere l'immagine devi chiamare uno script php, allora potresti usare una "rewrite rule" per far sì che una richiesta come captcha.jpeg sul server sia tradotta in captcha-image.php
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    trovato sistema:

    Nella pagina html richiamare l'imagine così:
    [img]captcha.php[/img]Scrivi il codice<input type="text" name="validator" id="validator" />

    E il file captha.php:

    Codice PHP:

    <?php 
    //echo phpinfo();
    //http://forum.html.it/forum/showthread.php?s=&threadid=1145418&highlight=captcha

    //Captca-image 

    //session_start(); 

    if (empty($_SESSION['rand_code'])){ 
    $str ""
    $length 0
    $caratteri "abcdefghijkmnpqrstuvwxyz123456789";  /* Caratteri che appaiono come immagine */ 
    /*
    for ($i = 0; $i < 5; $i++){          // il 5 indica il numero di caratteri-immagine che appaiono 
    $str .= $caratteri{rand(0,34)};     // genera un numero casuale tra 0 e 32 per una stringa di lunghezza variabile da 3 a 5 cifre 

    */

    for ($i 0$i 5$i++){          // il 5 indica il numero di caratteri-immagine che appaiono 
        
    $str .= $caratteri{rand(0,32)}; // genera un numero casuale tra 0 e 32 per una stringa di lunghezza costante di 5 cifre



    $_SESSION['rand_code'] = $str


    /*
    $imgX = 60;//Sposta a dx i caratteri-immagine 
    $imgY = 18;//Sposta in alto i caratteri-immagine 
    $image = imagecreatetruecolor(60, 20); 
    $backgr_col = imagecolorallocate($image, 238,239,239);//Colore di sfondo 
    $border_col = imagecolorallocate($image, 208,208,20);//Colore del bordo 
    $text_col = imagecolorallocate($image, 46,60,31);//Colore dei caratteri-immagine 
    $font_size = 14;//Dimensione dei caratteri-immagine 
    imagefilledrectangle($image, 0, 0, 60, 20, $backgr_col);//Cambiando i 4 valori appare un'ombra nera e si può creare un'effetto rilievo o incassato del rettangolo   
    imagerectangle($image, 0, 0, 59, 19, $border_col);// Sposta il bordino colorato del rettangolo 

    */

    $imgX 70;//Sposta a dx i caratteri-immagine 
    $imgY 30;//Sposta in alto i caratteri-immagine 

    $image =imagecreatefromgif("captcha.gif");
    //$text_col = imagecolorallocate($image, 33,33,cc);//Colore dei caratteri-immagine 


    $font "georgia.ttf"
    $font_size 16;//Dimensione dei caratteri-immagine 
    $angle 0;//Ruota obliqui i caratteri-immagine 
    $box imagettfbbox($font_size,$angle,$font,$_SESSION['rand_code']); 
    $x = (int)($imgX $box[4]) / 2;//Sposta a sx i caratteri-immagine 
    $y = (int)($imgY $box[5]) / 2;//Sposta in alto i caratteri-immagine 
    imagettftext($image,$font_size,$angle,$x,$y,$text_col,$font,$_SESSION['rand_code']); 


    //header("Content-type: image/jpeg"); 
    //imagejpeg($image); 

    header("Content-type: image/gif"); 
    imagegif($image); 


    imagedestroy ($image); 

    //Fine Captca-image 

    ?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525

    non leggo il captcha generato

    helppp...
    funziona tutto ok tranne il fatto ke non riesco a leggere il valore della variabile $_SESSION['rand_code'] per controllare che l'utente abbia inserito un codice esatto.... le sessioni funzionano, ma questa variabile risulta vuota .,... perchè???

    Thxxx

  5. #5

    Re: Re: captcha -> richiamare immagine per nome

    Originariamente inviato da andbin
    Il "Content-type: image/jpeg" lo devi per forza mandare, non puoi farne a meno. Altrimenti il browser non saprebbe come interpretare lo stream di dati.

    Se vuoi "nascondere" il fatto che per avere l'immagine devi chiamare uno script php, allora potresti usare una "rewrite rule" per far sì che una richiesta come captcha.jpeg sul server sia tradotta in captcha-image.php
    Codice PHP:
    <?php
    //echo phpinfo();
    //http://forum.html.it/forum/showthread.php?s=&threadid=1145418&highlight=captcha

    //Captca-image

    session_start(); // <---- questa non la devi commentare.. :D

    if (empty($_SESSION['rand_code'])){
    $str "";
    $length 0;
    $caratteri "abcdefghijkmnpqrstuvwxyz123456789";  /* Caratteri che appaiono come immagine */
    /*
    for ($i = 0; $i < 5; $i++){          // il 5 indica il numero di caratteri-immagine che appaiono
    $str .= $caratteri{rand(0,34)};     // genera un numero casuale tra 0 e 32 per una stringa di lunghezza variabile da 3 a 5 cifre
    }
    */

    for ($i 0$i 5$i++){          // il 5 indica il numero di caratteri-immagine che appaiono
        
    $str .= $caratteri{rand(0,32)}; // genera un numero casuale tra 0 e 32 per una stringa di lunghezza costante di 5 cifre
    }


    $_SESSION['rand_code'] = $str;
    }

    /*
    $imgX = 60;//Sposta a dx i caratteri-immagine
    $imgY = 18;//Sposta in alto i caratteri-immagine
    $image = imagecreatetruecolor(60, 20);
    $backgr_col = imagecolorallocate($image, 238,239,239);//Colore di sfondo
    $border_col = imagecolorallocate($image, 208,208,20);//Colore del bordo
    $text_col = imagecolorallocate($image, 46,60,31);//Colore dei caratteri-immagine
    $font_size = 14;//Dimensione dei caratteri-immagine
    imagefilledrectangle($image, 0, 0, 60, 20, $backgr_col);//Cambiando i 4 valori appare un'ombra nera e si può creare un'effetto rilievo o incassato del rettangolo   
    imagerectangle($image, 0, 0, 59, 19, $border_col);// Sposta il bordino colorato del rettangolo

    */

    $imgX 70;//Sposta a dx i caratteri-immagine
    $imgY 30;//Sposta in alto i caratteri-immagine

    $image =imagecreatefromgif("captcha.gif");
    //$text_col = imagecolorallocate($image, 33,33,cc);//Colore dei caratteri-immagine


    $font "georgia.ttf";
    $font_size 16;//Dimensione dei caratteri-immagine
    $angle 0;//Ruota obliqui i caratteri-immagine
    $box imagettfbbox($font_size,$angle,$font,$_SESSION['rand_code']);
    $x = (int)($imgX $box[4]) / 2;//Sposta a sx i caratteri-immagine
    $y = (int)($imgY $box[5]) / 2;//Sposta in alto i caratteri-immagine
    imagettftext($image,$font_size,$angle,$x,$y,$text_col,$font,$_SESSION['rand_code']);


    //header("Content-type: image/jpeg");
    //imagejpeg($image);

    header("Content-type: image/gif");
    imagegif($image);


    imagedestroy ($image);

    //Fine Captca-image

    ?>
    devi mettere il session_start();

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 © 2025 vBulletin Solutions, Inc. All rights reserved.