写了一个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);?>