相同的代码,不同的结果。为什么?

时间:2012-11-06 16:16:30

标签: php captcha

我创建了一个Captcha图像,用于各种表格。它工作正常,创建一行字母,输入正确后将信息发送到正确的电子邮件。

但是,当我剪切并粘贴完全相同的代码时,图像会创建无法读取的数字,因此无法发送表单。我不能为我的生活看到为什么会这样?

或者至少阻止数字出现?

非常感谢您的任何帮助

以下代码:

    <?php session_start();
  // Set some important CAPTCHA constants

define('CAPTCHA_NUMCHARS', 6);   
define('CAPTCHA_WIDTH', 100);    
define('CAPTCHA_HEIGHT', 25);   

// Generate the random pass-phrase
$pass_phrase = "";
for ($i = 0; $i < CAPTCHA_NUMCHARS; $i++) {
$pass_phrase .= chr(rand(97, 122));
  }

 // Store the encrypted pass-phrase in a session variable
 $_SESSION['pass_phrase'] = SHA1($pass_phrase);

// Create the image
$img = imagecreatetruecolor(CAPTCHA_WIDTH, CAPTCHA_HEIGHT);
// Set a white background with black text and gray graphics

$bg_color = imagecolorallocate($img, 255, 255, 255);     // white
$text_color = imagecolorallocate($img, 0, 0, 0);         // black
$graphic_color = imagecolorallocate($img, 64, 64, 64);   // dark gray

 // Fill the background
  imagefilledrectangle($img, 0, 0, CAPTCHA_WIDTH, CAPTCHA_HEIGHT, $bg_color);
 // Draw some random lines

for ($i = 0; $i < 5; $i++) {
    imageline($img, 0, rand() % CAPTCHA_HEIGHT, CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, $graphic_color);
  }
 // Sprinkle in some random dots

for ($i = 0; $i < 50; $i++) {
    imagesetpixel($img, rand() % CAPTCHA_WIDTH, rand() % CAPTCHA_HEIGHT, $graphic_color);
  }
// Draw the pass-phrase string

  imagettftext($img, 18, 0, 5, CAPTCHA_HEIGHT - 5, $text_color, 'Courier New Bold.ttf', $pass_phrase);
// Output the image as a PNG using a header

header("Content-type: image/png");
  imagepng($img);


  // Clean up

imagedestroy($img);

?>

1 个答案:

答案 0 :(得分:0)

首先,尝试将密码直接硬编码到imagettftext()函数中。这将让您确定问题是否存在于密码短语生成算法或png生成...