2012-11-06 119 views
0

我創建了一個驗證碼圖片以用於各種形式。它的工作正常,一個是創建一行字母,當正確輸入時將信息發送到正確的電子郵件。相同的代碼,不同的結果。爲什麼?

但是,當我剪切並粘貼完全相同的代碼時,圖像會創建無法讀取的數字,因此無法發送表單。我不能爲我的生活看到爲什麼會這樣?

或至少防止數字形式出現?

在此先感謝非常的任何幫助下

代碼:

<?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

再解釋問題部分,舉一個例子;因爲你有圖像,顯示它們。另外,這可能與您的字體文件有關嗎? – mario

+1

SHA-1不是加密程序,不要稱之爲。 – NullUserException

+3

無關緊要,它存儲在會話中,以便用戶永遠不會看到它。不妨放棄散列並直接存儲答案。會話存儲在服務器端。 – Halcyon

回答

0

首先嚐試硬編碼直接密語成imagettftext()函數。這將讓您確定問題是否存在於密碼生成算法或PNG代...

相關問題