2014-09-25 130 views
-1
<?php 
session_start(); 
if(isset($_POST["captcha"])) { 
    if(($_SESSION['captcha_code'] == $_POST['captcha']) && (!empty($_SESSION['captcha_code']))) { 
     //Passed! 
     $captcha_msg="Thank you"; 
    }else{ 
     // Not passKed 8-(
     $captcha_msg="invalid code"; 
     if(isset($_POST["MM_insert"])){ 
      unset($_POST["MM_insert"]); 
     } 
     if(isset($_POST["MM_update"])){ 
      unset($_POST["MM_update"]); 
     } 
    } 
} 
class CaptchaImage { 
    var $font = "verdana.ttf"; 
    function hex_to_dec($hexcolor){ 
    //convert hex hex values to decimal ones 
    $dec_color=array('r'=>hexdec(substr($hexcolor,0,2)),'g'=>hexdec(substr($hexcolor,2,2)),'b'=>hexdec(substr($hexcolor,4,2))); 
    return $dec_color; 
    } 
    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 CaptchaImage($width='120',$height='30',$characters='6',$hex_bg_color='FFFFFF',$hex_text_color="FF0000",$hex_noise_color="CC0000", $img_file='captcha.jpg') { 
     $rgb_bg_color=$this->hex_to_dec($hex_bg_color); 
     $rgb_text_color=$this->hex_to_dec($hex_text_color); 
     $rgb_noise_color=$this->hex_to_dec($hex_noise_color); 
     $code = $this->generateCode($characters); 
     /* font size will be 60% of the image height */ 
     $font_size = $height * 0.60; 
     $image = @imagecreate($width, $height) or die('Cannot Initialize new GD image stream'); 
     /* set the colours */ 
     $background_color = imagecolorallocate($image, $rgb_bg_color['r'], $rgb_bg_color['g'],$rgb_bg_color['b']); 
     $text_color = imagecolorallocate($image, $rgb_text_color['r'], $rgb_text_color['g'],$rgb_text_color['b']); 
     $noise_color = imagecolorallocate($image, $rgb_noise_color['r'], $rgb_noise_color['g'],$rgb_noise_color['b']); 
     /* 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); 
     $x = ($width - $textbox[4])/2; 
     $y = ($height - $textbox[5])/2; 
     imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code); 
     /* save the image */ 
     imagejpeg($image,$img_file); 
     imagedestroy($image); 
     echo "<img src=\"$img_file?".time()."\" width=\"$width\" height=\"$height\" alt=\"security code\" id=\"captchaImg\">"; 
     $_SESSION['captcha_code'] = $code; 
    } 

} 

警告:imagejpeg():Invalied第二paramete,它必須在文件名或線/Applications/XAMPP/xamppfiles/htdocs/chunyiu/memberAdd.php流63PHP驗證碼權限被拒絕

爲什麼說63行imagejpeg($ image,$ img_file);無效第二個參數

+0

告訴我們你在哪裏調用這個函數 – 2014-09-25 13:01:21

回答

0

您從未定義$img_file。例如:

$img_file = 'picture.jpg'; 
imagejpeg($image,$img_file); 
.... 

還要確保路徑是可寫的。