PHP 验证码不显示问题
ringa_lee
ringa_lee 2017-04-10 17:06:42
[PHP讨论组]
  1. 描述你的问题 GD库已经打开,搜索看了其他朋友的解决办法:清除BOM、ob_clean()、代码起始位置不换行还是不显示。

  2. 贴上相关代码

<?php

session_start();
//创建随机验证码
for ($i=0;$i<4;$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);
//黑色边框
$_black = imagecolorallocate($_img,0,0,0);
imagerectangle($_img,0,0,$_width-1,$_height-1,$_black);
//随机下划线
for($i=0;$i<6;$i++){
    $_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255),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);
}
//输出图像
header('Content-Type:image/png');
imagepng($_img);
//删除图像 
imagedestroy($_img);

?>
ringa_lee
ringa_lee

ringa_lee

全部回复(10)
天蓬老师

经过测试,你的代码问题在这里:
在实现随机下划线的时候,imagecolorallocate这个函数传入的参数不对,应该给予4个params,现在的代码给了6个参数。
结果:修改后,验证码显示没有问题,可以正常输出。

大家讲道理

这里的imagecolorallocate应该是传4个参数 还有没看懂你上面

这一点没明白你的意思是要干啥下面也看到调用的地方 注释之后

结果是这个

黄舟

查看error log,再判断

大家讲道理

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

PHPz

要从其他地方查看,从framework所有的文件进行DOM头排查

大家讲道理

你先试试复制一些网上成功的代码试试看,如果能成功那么就是你代码的问题,不然就应该是环境的问题。

巴扎黑

是不是没安装GD?检查phpinfo()

高洛峰

在header()前清理输出缓冲区,

ob_clean()
header('Content-Type:image/png');
imagepng($_img);

最终生成的验证码是酱紫,

那么问题来了,
1、为什么ob_clean()要加在imagepng()之前?
显然,header()之前的代码都不会被缓存到ob,真正缓存到ob的是imagepng()生成的验证码,当你在浏览器刷新时,ob_clean()会为你清除前一次保存在ob的验证码。然后imagepng()再次生成验证码保存到obob随后丢到程序缓存打包到浏览器。

2、假如没有ob_clean(),按理说也会生成一张验证码,验证码跑到哪里了?
请使用php5.4以下版本或者关闭ob

Ps:php5.3之后,ob_start()默认开启,重复添加ob_start()会导致ob_end_*()失效。(Oops..在本地编辑代码ob_start重复则出错,然而看到某个上传类却能完好运行。谁知道请详解一下。)

怪我咯

先谢谢帮修改代码高亮的朋友,改了几次高亮都不行,第一次用。回去试试。

PHP中文网

清除缓存还是不行?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号