解决PHP生成校验码时“图像因其本身有错无法显示”的错误
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生成校验码时“图像因其本身有错无法显示”的错误相关推荐
- 解决查看框架源码时 class file editor source not found
2019独角兽企业重金招聘Python工程师标准>>> 以spring为例,对于从网上下载下来的一个框架的lib文件夹下,通常对于同一名字有三个连续的jar(下图话红线) 我们平常导 ...
- ftl保存成html中文是乱码,解决freemarker生成静态页面时乱码问题
在使用freemarker技术生成静态页面时,虽然在各方面统一使用utf8编码,但是生成的页面还是乱码.查阅相关资料,对模板,代码等都设置了一下,最终解决乱码问题. 首先,模板文件确定是UFT-8编码 ...
- GB/T 17710-1999 PHP生成校验码
校验码算法描述如下:详细:http://wenku.baidu.com/link?url=CDvNJ1sLYOPzbbxjEy5R-oME95RlfTCUU5-I5M0bqUt0I32b0Xd0EKm ...
- 解决android扫描二维码时,用户禁止权限报错问题
当我用ZBarDecoder.jar写了一个扫描二维码的程序,确实实现了扫描功能.组长说如果用户禁止调用摄像头,那程序也不能崩溃.结果我一运行就崩溃了.在网上自己找了找,可以这样解决. try { m ...
- Python笔记-解决pyinstaller打包后运行时动态加载模块报错(No module named)
出现的问题就是:No module named 原因是我代码里面使用了这个 importlib.import_module pyinstaller没有检测到. 百度上没有找到解决办法,在外wang找到 ...
- 【已解决】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 ...
- Java:15位或18位居民身份证号码通用校验(正则表达式、日期格式、末尾校验码)
身份证号码校验,正则表达式校验.日期格式校验.18位身份证末尾校验码校验 前六位省市县号码变更频繁,这里就不做校验 import java.text.ParseException; import ja ...
- 解决PHP生成验证码不显示的问题
验证码不显示: 问题描述: 确保自己的写的代码没有问题之后,发现生成的验证码一会显示. 解决方案: ob_clean(); //关键代码,防止出现'图像因其本身有错无法显示'的问题.header('c ...
- 生成文件md5校验码可满足大于2G情况
对于文件生成md5校验码,在实际开发中用处很大,有利于比较服务器上是否已经存在该文件,哪怕文件名不一致也无所谓. 由于存在超大文件,经过从网上查找,得到两种方法,一种是利用MappedByteBuff ...
最新文章
- office技巧:Word如何快速的创建表格
- 大名鼎鼎的Requests库用了什么编码风格?
- excel取整函数_Excel中的这些烧脑问题,你遇到过几种?
- hdu 4109 Instrction Arrangement 拓扑排序 关键路径
- HDS:聚焦未来的投资“冻结”
- 新瓶旧酒ASP.NET AJAX(1) - 简单地过一下每个控件(ScriptManager、ScriptManagerProxy
- cygwin安装好了如何添加cmake make_在windows上使用cmake
- [POI2009]SLO
- sql语句中case_SQL中的CASE语句
- 无法支持python程序的编辑运行和调试_python程序的调试方法
- python下载-Python下载和安装图文教程[超详细]
- DbVisualizer的Driver连接Oracle Thin选项不可选
- C#学习笔记二: C#类型详解
- 如何破解qq仅三天可见
- OneNote2007简体中文便携版
- PHP是世界上最好的语言
- 重装系统后电脑主机前面音频输出没用暨Realtek高清晰音频管理器
- Java 打印 Excel 表格
- 12.2 关闭DLM 自动收集统计信息 (SCM0)ORA-00600之[ksliwat: bad wait time]
- win10打印机共享问题集,及解决方法持续更新
热门文章
- django 后台日期_Django中的日期和时间格式 DateTimeField
- html原生音频播放器倍速,HTML5倍数功能视频播放器(加速2倍,1.5倍播放)
- limux php启动_linux下nginx与php设置开机启动代码
- java面试题十四 基本类型的默认值
- Address localhost:8080 is already in used
- 小鹤双拼记忆口诀_选择双拼之自然码
- python 画系统关联图_Python基于pyecharts实现关联图绘制
- 2字节取值范围_5G NR 下行同步SSB(2)—PSS和SSS的用途
- 安卓开发fragment之间的切换_Android开发必会的组件化技术—Android架构和提升必备...
- 针对校园某服务器的一次渗透测试