温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何解决php验证码后台不能生成的问题

发布时间:2021-11-19 09:36:46 阅读:172 作者:小新 栏目:编程语言
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章将为大家详细讲解有关如何解决php验证码后台不能生成的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

php验证码后台不能生成的解决办法:1、添加“header('Content-type: image/png')”语句;2、通过“ob_clean();”清除输出缓存即可。

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑

PHP验证码不能生成图片,原因解决:

生成图片时,header('Content-type: image/png');前面不能有输出!!!

或者,前面加:ob_clean(); 即使用输出也可以通过这句来清除输出缓存!很重要!!!

当然,首先要打开gd2库,可通过phpinfo查看。清除了bom,代码也是顶行开始写的,因此问题可能出现在代码上。后来经过研究,发现还是要更改一下程序,要在header前面加上ob_clean()这个语句,这样就可以运行了!哈哈,编码调试程序如当医生,百练成刚。

<?php
//设置 验证码高度宽度\上面字符个数
$img_w 70;
$img_h 22;
$font 5;
$char_len 5;
//数组合并, range()函数返回一个范围数组
$char array_merge range 'a''z' ), range 'A''Z' ), range '1''9' ) );
$rand_keys array_rand $char$char_len ); //随机从数组中取指定个数的元素,生成键值
if ($char_len == 1) { //若只有一个数,则array_rand()返回非数组类型
         $rand_keys array ($rand_keys );
}
shuffle($rand_keys);  //可以不用
$code '';
foreach $rand_keys as $k ) {
         $code .= $char [$k];
}
session_start ();
$_SESSION ['captcha'] = $code;
 
//添加线、色
//创建新图像
$img imagecreatetruecolor $img_w$img_h );
//分配颜色
$bg_color imagecolorallocate $img0xcc0xcc0xcc );
//画布背景色
imagefill $img00$bg_color );
//干扰线
for($i 0$i 300; ++$i) {
         $color imagecolorallocate $imgmt_rand 0255 ), mt_rand 0255 ), mt_rand 0255 ) );
         imagesetpixel $imgmt_rand 0$img_w ), mt_rand 0$img_h ), $color );
}
for($i 0$i <= 10; ++ $i) {
         //设置直线颜色
         $color imageColorAllocate $imgmt_rand 0255 ), mt_rand 0255 ), mt_rand 0255 ) );
         //在$img图像上随机画一条直线
         imageline $imgmt_rand 0$img_w ), mt_rand 0$img_h ), mt_rand 0$img_w ), mt_rand 0$img_h ), $color );
         //imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color);
}
 
//加加框
$rect_color imagecolorallocate $img0x900x900x90 );
imagerectangle $img00$img_w 1$img_h 1$rect_color );
$str_color imagecolorallocate $imgmt_rand 0100 ), mt_rand 0100 ), mt_rand 0100 ) );
$font_w imagefontwidth $font );
$font_h imagefontheight $font );
$str_len $font_w $char_len;
imagestring $img$font, ($img_w $str_len) / 2, ($img_h $font_h) / 2$code$str_color );

设定字符串颜色

$str_color imageColorAllocate($imgmt_rand(0100), mt_rand(0100),mt_rand(0100));
//设定字符串位置
$font_w imageFontWidth($font);  //字体宽
$font_h imageFontHeight($font); //字体高
$str_w $font_w $char_len;     //字符串宽
imageString($img$font, ($img_w-$str_w)/2, ($img_h-$font_h)/2$code$str_color);
echo 'ddd'//输出影响生成图片,查找了大半天的原因终于找到了
ob_clean(); //也可以加上这句,这样前面有输出,清除输出缓存
//生成图片
header 'Content-Type: image/png' );//header前不能加任何输出或加ob_clean()清除
imagepng($img);
//----4 销毁画布
imagedestroy($img);

关于“如何解决php验证码后台不能生成的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI

开发者交流群×