<?php
session_start();//随机码的个数
$_rnd_code = 4;//创建随机码
for ($i=0;$i<$_rnd_code;$i++) {
$_nmsg .= dechex(mt_rand(0,15));
}//保存在session
$_SESSION[‘code‘] = $_nmsg;//长和高
$_width = 75;
$_height = 25;//创建一张图像
$_img = imagecreatetruecolor($_width,$_height);//白色
$_white = imagecolorallocate($_img,255,255,255);//填充
imagefill($_img,0,0,$_white);$_flag = false;
if ($_flag) {
//黑色,边框
$_black = imagecolorallocate($_img,0,0,0);
imagerectangle($_img,0,0,$_width-1,$_height-1,$_black);
}//随即画出6个线条
for ($i=0;$i<6;$i++) {
$_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height),$_rnd_color);
}//随即雪花
for ($i=0;$i<100;$i++) {
$_rnd_color = imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),‘*‘,$_rnd_color);
}//输出验证码
for ($i=0;$i<strlen($_SESSION[‘code‘]);$i++) {
$_rnd_color = imagecolorallocate($_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));
imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION[‘code‘][$i],$_rnd_color);
}//输出图像
header(‘Content-Type: image/png‘);
imagepng($_img);//销毁
imagedestroy($_img);?>
因为网页上还有其他内容,所以header("Content-type:image/jpeg");
位置已经被占用,验证码不能出现了,就会出现图像“http://localhost/**.php”因其本身有错,无法显示”
那么,解决这个问题的最简单的办法就是,直接删除header("Content-type:image/jpeg");
或者在其之前加上
ob_clean();
PHP验证码常见问题及解决办法
(http://localhost/Test/code.php因其本身有错无法显示)