2019独角兽企业重金招聘Python工程师标准>>>

今天使用http://crazymud.iteye.com/blog/452293给出的代码进行PHP生成校验码功能的实现,发现firefox一直提示“图像.......因其本身有错无法显示”的问题,作者也提示了说“如果浏览器显示“图像XXX因其本身有错无法显示”,可尽量去掉文中空格”,但把代码中所有空格都去掉了还是不能显示检验图片。于是深度google,大部分的解决方案也是将“<?”这句代码前的空格回车一切都删掉以防止有html输出,但这根本解决不了我的问题,后来看到有人在Header("Content-type: image/PNG");这句代码前使用ob_clean()清除输出,结果一试之下果然成功。现将原http://crazymud.iteye.com/blog/452293作者的代码修改后贴到下面,以备不时之需(使用方法参看原帖):

<?php  session_start();  session_register("login_check_number");    //先成生背景,再把生成的验证码放上去  $img_height=70;//先定义图片的长、宽  $img_width=25;  $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);      $authnum.=$list[$randnum];  }  //把验证码字符保存到session  $_SESSION["login_check_number"] = $authnum;      $aimg = imagecreate($img_height,$img_width);    //生成图片  imagecolorallocate($aimg, 255,255,255);            //图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了  $black = imagecolorallocate($aimg, 0,0,0);        //定义需要的黑色    for ($i=1; $i<=100; $i++) {      imagestring($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"@",imagecolorallocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));  }    //为了区别于背景,这里的颜色不超过200,上面的不小于200  for ($i=0;$i<strlen($authnum);$i++){      imagestring($aimg, mt_rand(3,5),$i*$img_height/4+mt_rand(2,7),mt_rand(1,$img_width/2-2), $authnum[$i],imagecolorallocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));  }  imagerectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//画一个矩形  ob_clean();  //关键代码,防止出现'图像因其本身有错无法显示'的问题。 Header("Content-type: image/PNG");  ImagePNG($aimg);//生成png格式  ImageDestroy($aimg);  ?> 

转载于:https://my.oschina.net/u/568279/blog/106410

解决PHP生成校验码时“图像因其本身有错无法显示”的错误相关推荐

  1. 解决查看框架源码时 class file editor source not found

    2019独角兽企业重金招聘Python工程师标准>>> 以spring为例,对于从网上下载下来的一个框架的lib文件夹下,通常对于同一名字有三个连续的jar(下图话红线) 我们平常导 ...

  2. ftl保存成html中文是乱码,解决freemarker生成静态页面时乱码问题

    在使用freemarker技术生成静态页面时,虽然在各方面统一使用utf8编码,但是生成的页面还是乱码.查阅相关资料,对模板,代码等都设置了一下,最终解决乱码问题. 首先,模板文件确定是UFT-8编码 ...

  3. GB/T 17710-1999 PHP生成校验码

    校验码算法描述如下:详细:http://wenku.baidu.com/link?url=CDvNJ1sLYOPzbbxjEy5R-oME95RlfTCUU5-I5M0bqUt0I32b0Xd0EKm ...

  4. 解决android扫描二维码时,用户禁止权限报错问题

    当我用ZBarDecoder.jar写了一个扫描二维码的程序,确实实现了扫描功能.组长说如果用户禁止调用摄像头,那程序也不能崩溃.结果我一运行就崩溃了.在网上自己找了找,可以这样解决. try { m ...

  5. Python笔记-解决pyinstaller打包后运行时动态加载模块报错(No module named)

    出现的问题就是:No module named 原因是我代码里面使用了这个 importlib.import_module pyinstaller没有检测到. 百度上没有找到解决办法,在外wang找到 ...

  6. 【已解决】labelme编辑label时,闪退;报错“IndexError: list index out of range”

    当前虚拟环境: python     3.6.13 labelme   5.0.1 pip           21.3.1 1.IndexError: list index out of range ...

  7. Java:15位或18位居民身份证号码通用校验(正则表达式、日期格式、末尾校验码)

    身份证号码校验,正则表达式校验.日期格式校验.18位身份证末尾校验码校验 前六位省市县号码变更频繁,这里就不做校验 import java.text.ParseException; import ja ...

  8. 解决PHP生成验证码不显示的问题

    验证码不显示: 问题描述: 确保自己的写的代码没有问题之后,发现生成的验证码一会显示. 解决方案: ob_clean(); //关键代码,防止出现'图像因其本身有错无法显示'的问题.header('c ...

  9. 生成文件md5校验码可满足大于2G情况

    对于文件生成md5校验码,在实际开发中用处很大,有利于比较服务器上是否已经存在该文件,哪怕文件名不一致也无所谓. 由于存在超大文件,经过从网上查找,得到两种方法,一种是利用MappedByteBuff ...

最新文章

  1. office技巧:Word如何快速的创建表格
  2. 大名鼎鼎的Requests库用了什么编码风格?
  3. excel取整函数_Excel中的这些烧脑问题,你遇到过几种?
  4. hdu 4109 Instrction Arrangement 拓扑排序 关键路径
  5. HDS:聚焦未来的投资“冻结”
  6. 新瓶旧酒ASP.NET AJAX(1) - 简单地过一下每个控件(ScriptManager、ScriptManagerProxy
  7. cygwin安装好了如何添加cmake make_在windows上使用cmake
  8. [POI2009]SLO
  9. sql语句中case_SQL中的CASE语句
  10. 无法支持python程序的编辑运行和调试_python程序的调试方法
  11. python下载-Python下载和安装图文教程[超详细]
  12. DbVisualizer的Driver连接Oracle Thin选项不可选
  13. C#学习笔记二: C#类型详解
  14. 如何破解qq仅三天可见
  15. OneNote2007简体中文便携版
  16. PHP是世界上最好的语言
  17. 重装系统后电脑主机前面音频输出没用暨Realtek高清晰音频管理器
  18. Java 打印 Excel 表格
  19. 12.2 关闭DLM 自动收集统计信息 (SCM0)ORA-00600之[ksliwat: bad wait time]
  20. win10打印机共享问题集,及解决方法持续更新

热门文章

  1. django 后台日期_Django中的日期和时间格式 DateTimeField
  2. html原生音频播放器倍速,HTML5倍数功能视频播放器(加速2倍,1.5倍播放)
  3. limux php启动_linux下nginx与php设置开机启动代码
  4. java面试题十四 基本类型的默认值
  5. Address localhost:8080 is already in used
  6. 小鹤双拼记忆口诀_选择双拼之自然码
  7. python 画系统关联图_Python基于pyecharts实现关联图绘制
  8. 2字节取值范围_5G NR 下行同步SSB(2)—PSS和SSS的用途
  9. 安卓开发fragment之间的切换_Android开发必会的组件化技术—Android架构和提升必备...
  10. 针对校园某服务器的一次渗透测试