2012-11-24 51 views
1

我有一個PHP驗證碼圖像腳本,傳回代碼驗證碼使用會話變量,但這不會工作,如果cookie被關閉。傳遞字符串從PHP驗證碼圖像腳本到另一個PHP腳本當關閉Cookie

我想嘗試覆蓋所有可能性,所以即使關閉cookie,我的表單也能正常工作。

我想知道是否有方法將$ code從captcha.php傳回contactus.php而不使用會話變量。

我懷疑它,但我想我會問,看看我是否缺少任何東西。

captcha.php

session_start(); 

class CaptchaSecurityImages { 

    var $font = 'monofont.ttf'; 

    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($possible, mt_rand(0, strlen($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($image, 255, 255, 255); 
    $text_color = imagecolorallocate($image, 20, 40, 100); 
    $noise_color = imagecolorallocate($image, 20, 40, 100); 
    /* generate random dots in background */ 
    for($i=0; $i<($width*$height)/3; $i++) { 
     imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color); 
    } 
    /* generate random lines in background */ 
    for($i=0; $i<($width*$height)/150; $i++) { 
     imageline($image, mt_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_size, 0, $this->font, $code) or die('Error in imagettfbbox function'); 
    $x = ($width - $textbox[4])/2; 
    $y = ($height - $textbox[5])/2; 
    imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function'); 
    /* output captcha image to browser */ 
    header('Content-Type: image/jpeg'); 
    imagejpeg($image); 
    imagedestroy($image); 
    $_SESSION['six_letters_code'] = $code; 
} 
} 

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

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

Contactus.php

<img id="captchaimg" alt="captchaimg" src="<?php echo htmlentities(getSiteURL() . '/server/includes/captcha.php'); ?>" 

回答