Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    Leggere sessione appena creata da sistema captcha

    Ciao a tutti.
    Ho un sistema captcha che mi genera l'immagine con il codice da digitare e automaticamente una session contenente lo stesso codice.
    Se però cerco di stampare la session appena creata, il valore è nullo.
    Ho verificato con isset($_SESSION[...]) ed è come se la session non esistesse.
    Se invece passo ad un'altra pagina e cerco di fare la stessa cosa, il valore della sesison viene stampato correttamente.

    Idee sul motivo?

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    hai messo session_start()???

    posta un po' di codice

  3. #3
    Certo che session_start(); c'è

    L'immagine viene richiamata così:
    Codice PHP:
    [img]CaptchaSecurityImages.php?width=100&height=40&characters=5[/img
    dove CaptchaSecurityImages.php è:
    Codice PHP:
    class CaptchaSecurityImages {

        var 
    $font 'monofont.ttf';
        var 
    $dir_font 'font/';

        function 
    generateCode($characters) {
            
    /* list all possible characters, similar looking characters and vowels have been removed */
            
    $possible '23456789bcdfghjkmnpqrstvwxyz';
            
    $code '';
            
    $i 0;
            while (
    $i $characters) { 
                
    $code .= substr($possiblemt_rand(0strlen($possible)-1), 1);
                
    $i++;
            }
            return 
    $code;
        }

        function 
    CaptchaSecurityImages($width='120',$height='40',$characters='6') {

            
    $code $this->generateCode($characters);
            
    /* font size will be 75% of the image height */
            
    $font_size $height 0.75;
            
    $image = @imagecreate($width$height) or die('Cannot initialize new GD image stream');
            
    /* set the colours */
            
    $background_color imagecolorallocate($image255255255);
            
    $text_color imagecolorallocate($image2040100);
            
    $noise_color imagecolorallocate($image100120180);
            
    /* generate random dots in background */
            
    for( $i=0$i<($width*$height)/3$i++ ) {
                
    imagefilledellipse($imagemt_rand(0,$width), mt_rand(0,$height), 11$noise_color);
            }
            
    /* generate random lines in background */
            
    for( $i=0$i<($width*$height)/150$i++ ) {
                
    imageline($imagemt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
            }

            
    /* create textbox and add text */
            
    $textbox imagettfbbox($font_size0realpath('.') . '/' $this->dir_font $this->font$code) or die('Error in imagettfbbox function');
            
    $x = ($width $textbox[4])/2;
            
    $y = ($height $textbox[5])/2;
            
    imagettftext($image$font_size0$x$y$text_colorrealpath('.') . '/' $this->dir_font $this->font$code) or die('Error in imagettftext function');
            
    /* output captcha image to browser */
            
    header('Content-Type: image/jpeg');
            
    imagejpeg($image);
            
    imagedestroy($image);
            
    $_SESSION['security_code'] = $code;
        }

    }

    $width = isset($_GET['width']) ? $_GET['width'] : '120';
    $height = isset($_GET['height']) ? $_GET['height'] : '40';
    $characters = isset($_GET['characters']) && $_GET['characters'] > $_GET['characters'] : '6';

    $captcha = new CaptchaSecurityImages($width,$height,$characters); 
    Una classe che crea l'immagine e poi crea la session,

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Codice PHP:
    session_start();
    class 
    CaptchaSecurityImages 

        var 
    $font 'monofont.ttf'
        var 
    $dir_font 'font/'

        function 
    generateCode($characters) { 
            
    /* list all possible characters, similar looking characters and vowels have been removed */ 
            
    $possible '23456789bcdfghjkmnpqrstvwxyz'
            
    $code ''
            
    $i 0
            while (
    $i $characters) {  
                
    $code .= substr($possiblemt_rand(0strlen($possible)-1), 1); 
                
    $i++; 
            } 
            return 
    $code
        } 

        function 
    CaptchaSecurityImages($width='120',$height='40',$characters='6') { 

            
    $code $this->generateCode($characters); 
            
    /* font size will be 75% of the image height */ 
            
    $font_size $height 0.75
            
    $image = @imagecreate($width$height) or die('Cannot initialize new GD image stream'); 
            
    /* set the colours */ 
            
    $background_color imagecolorallocate($image255255255); 
            
    $text_color imagecolorallocate($image2040100); 
            
    $noise_color imagecolorallocate($image100120180); 
            
    /* generate random dots in background */ 
            
    for( $i=0$i<($width*$height)/3$i++ ) { 
                
    imagefilledellipse($imagemt_rand(0,$width), mt_rand(0,$height), 11$noise_color); 
            } 
            
    /* generate random lines in background */ 
            
    for( $i=0$i<($width*$height)/150$i++ ) { 
                
    imageline($imagemt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color); 
            } 

            
    /* create textbox and add text */ 
            
    $textbox imagettfbbox($font_size0realpath('.') . '/' $this->dir_font $this->font$code) or die('Error in imagettfbbox function'); 
            
    $x = ($width $textbox[4])/2
            
    $y = ($height $textbox[5])/2
            
    imagettftext($image$font_size0$x$y$text_colorrealpath('.') . '/' $this->dir_font $this->font$code) or die('Error in imagettftext function'); 
            
    /* output captcha image to browser */ 
            
    header('Content-Type: image/jpeg'); 
            
    imagejpeg($image); 
            
    imagedestroy($image); 
            
    $_SESSION['security_code'] = $code
        } 



    $width = isset($_GET['width']) ? $_GET['width'] : '120'
    $height = isset($_GET['height']) ? $_GET['height'] : '40'
    $characters = isset($_GET['characters']) && $_GET['characters'] > $_GET['characters'] : '6'

    $captcha = new CaptchaSecurityImages($width,$height,$characters); 

  5. #5
    Non l'ho incollato nel codice (e me ne scuso), ma come ti dicevo il session_start(); c'è sia sul file che genera l'immagine che sulla pagina ove il file viene richiamato.

  6. #6
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Scusa ma se io qui
    Codice PHP:
    [img]CaptchaSecurityImages.php?width=100&height=40&characters=5[/img
    gli passo 0 come characters? baypasso il captcha?
    E' meglio se quel valore lo lasci fisso nella pagina che crea il captcha.
    Oppure metti un controllo di questo tipo
    Codice PHP:
    if($characters 5)
        
    $characters 5

    EDIT: come non detto, ho letto il tuo codice
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  7. #7
    Andy_87, quel link è fisso sulla pagina.

  8. #8
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Originariamente inviato da Andy_87
    Scusa ma se io qui
    Codice PHP:
    [img]CaptchaSecurityImages.php?width=100&height=40&characters=5[/img
    gli passo 0 come characters? baypasso il captcha?
    E' meglio se quel valore lo lasci fisso nella pagina che crea il captcha.
    Oppure metti un controllo di questo tipo
    Codice PHP:
    if($characters 5)
        
    $characters 5

    EDIT: come non detto, ho letto il tuo codice
    c'è gia quel controllo
    Codice PHP:
    $characters = isset($_GET['characters']) && $_GET['characters'] > $_GET['characters'] : '6'

  9. #9
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Si il link è fisso sulla pagina, ma potrei benissimo salvarla in locale e modificare il campo characters, però come ho detto nella pagina che genera il captcha hai fatto il controllo, quindi è tutto ok
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  10. #10
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    l'immagine la vedi?

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.