PHP 验证码不显示问题

 8o断情戒爱o8 发布于 2022-12-01 04:13
  1. 描述你的问题 GD库已经打开,搜索看了其他朋友的解决办法:清除BOM、ob_clean()、代码起始位置不换行还是不显示。

  2. 贴上相关代码

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

    2022-12-01 04:51 回答
  • 这里的imagecolorallocate应该是传4个参数 还有没看懂你上面

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

    结果是这个

    2022-12-01 04:51 回答
  • 查看error log,再判断

    2022-12-01 04:51 回答
  • header('Content-Type:image/png');

    2022-12-01 04:51 回答
  • 要从其他地方查看,从framework所有的文件进行DOM头排查

    2022-12-01 04:51 回答
  • 你先试试复制一些网上成功的代码试试看,如果能成功那么就是你代码的问题,不然就应该是环境的问题。

    2022-12-01 04:51 回答
  • 是不是没安装GD?检查phpinfo()

    2022-12-01 04:51 回答
  • 在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重复则出错,然而看到某个上传类却能完好运行。谁知道请详解一下。)

    2022-12-01 04:51 回答
  • 先谢谢帮修改代码高亮的朋友,改了几次高亮都不行,第一次用。回去试试。

    2022-12-01 04:51 回答
  • 清除缓存还是不行?

    2022-12-01 04:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有