写了一个php验证码,但是死活显示不出来验证码,要么报错,要么显示不出内容,多方查找资料终于解决。
一、没开启gd库
一开始运行的时候报错:Call to undefined function imagecreatetruecolor() ,因为这个函数是gd库里面的。解决办法:在php.ini找到“;extension=php_gd2.dll”,去掉extension前面的“;”,保存重启apache服务器即可。
二、没考虑header前面的输出、空格或者换行
没考虑header前面的输出、空格或者换行就会报错:Cannot modify header information - headers already sent by (output started at。。。解决办法:在header前面加入ob_clean();把header头前面的所以输出内容清空。
以下是代码:
<?php
session_start();
for($i = 0; $i < 4; $i ++) {
$rand .= dechex(rand(1, 15));
}
$_SESSION[vcode] = $rand;
$im = imagecreatetruecolor(100, 30);
//设置颜色
$bg = imagecolorallocate($im, 0, 0, 0);//第一次用调色板的时候,是设置背景颜色
$te = imagecolorallocate($im, 255, 255, 255);
//把字符串写在图像左上角
imagestring($im, rand(1, 6), rand(3, 70), rand(0, 16), $rand, $te);
//输出图像
ob_clean(); //清除输出
header("Content-type:image/jpeg");
imagejpeg($im);
imagedestroy($im);
?>