您的位置:首页 > 编程语言 > PHP开发

关于php中验证码显示不出来的问题解决办法

2014-10-29 14:44 561 查看
首先先给一段源代码

<?php

$_width = 75;

$_height = 25;

$_rnd_code = 4;

$_flag = false;

$_nmsg=‘’;

for ($i=0;$i<$_rnd_code;$i++) {

$_nmsg .= dechex(mt_rand(0,15));

}

/**

$authnum='';

//生成验证码字符

$ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";

$list=explode(",",$ychar);//使用分隔符存储到数组中

for($i=0;$i<4;$i++){

$randnum=rand(0,35);

$_nmsg.=$list[$randnum];

}

*/

//保存在session

$_SESSION['code'] = $_nmsg;

//创建一张图像

$_img = imagecreatetruecolor($_width,$_height);

//白色

$_white = imagecolorallocate($_img,255,255,255);

//填充

imagefill($_img,0,0,$_white);

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);

}

error_reporting(0) ;

//输出图像

header('Content-Type: image/png');

imagepng($_img);

//销毁

imagedestroy($_img);

?>

检查办法

1.检查php.ini文件是否打开了 extention='php.gd2.dll',如果前面有 ; 要不该分号去掉,如果没有这检查代码的问题

2.代码只要在header代码前面加上一段就可以了

ob_clean();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐