我创建了一个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);
?>
答案 0 :(得分:0)
首先,尝试将密码直接硬编码到imagettftext()函数中。这将让您确定问题是否存在于密码短语生成算法或png生成...
中