2014-04-01 73 views
0

以下是代码工作正常,但我想添加自己的背景img而不是蓝色。还想在代码中添加字母?请帮助...如何插入自己的bg到验证码。?

<?php 
session_start(); 
$code=rand(10000,99999); 
$_SESSION["code"]=$code ; 
$im = imagecreatetruecolor(60, 24); 
$bg = imagecolorallocate($im, 22, 86, 165); 
$fg = imagecolorallocate($im, 255, 255, 255); 
imagefill($im, 0, 0, $bg); 
imagestring($im, 5, 5, 5, $code, $fg); 
header("Cache-Control: no-cache, must-revalidate"); 
header('Content-type: image/png'); 
imagepng($im); 
imagedestroy($im); 
?> 

回答

0

使用CAPTCHA的想法是告诉计算机和人类分开。这个验证码很容易被OCR程序破解。

说了这么多,你需要做到以下几点:

<?php 
session_start(); 
$code=rand(10000,99999); 
$_SESSION["code"]=$code ; 
$im = imagecreatefrompng("bg.png"); 
$fg = imagecolorallocate($im, 255, 255, 255); 
imagestring($im, 5, 5, 5, $code, $fg); 
header("Cache-Control: no-cache, must-revalidate"); 
header('Content-type: image/png'); 
imagepng($im); 
imagedestroy($im); 
?> 
+0

作为使用字母数字验证码,你可以参考[这里](http://stackoverflow.com/a/4356295/3461549) – msound

+0

谢谢,这工作正常。最后一件事是如何添加字母并增加字体大小。 – Target

+0

而不是做$ code = rand(10000,99999),你可以做$ code = generateRandomString(5)。有关generateRandomeString()的实现,请参阅[本讨论](http://stackoverflow.com/a/4356295/3461549)。为了增加字体大小,5是最大的字体,你已经在使用它了。所以,你需要考虑加载你自己的字体。你可以参考函数[imageloadfont](http://us3.php.net/manual/en/function.imageloadfont.php) – msound