PHP 用图片输出验证码 无法正常显示
在学习PHP用图片生产验证码过程中,图片无法正常生成,从网上查了一些资料找到两种解决方法
最初的代码:
<?php session_start(); //循环出四位 创建随机码 for ($i=0;$i<4;$i++) {$_nmsg .= dechex(mt_rand(0,15)); } //将随机码保存在session $_SESSION['code'] = $_nmsg; echo $_SESSION['code'];//开始创建图片 //长和高 $_width = 75; $_height = 25; //创建一张图像 $_img = imagecreatetruecolor($_width,$_height); //输出图像 header("Content-Type: image/png"); imagepng($_img); imagedestroy($_img); ?>
在浏览器无法正常输出,结果如下图所示:
根据从网上搜索的资料,总结了两种方法:
第一种:用 ob_clean();方法清理缓冲区的内容。
如果在网站中经常使用生成图片这类的文件,要想不出现上述错误,就要用ob_clean();方法清理缓冲区。
<?php session_start(); //循环出四位 创建随机码 for ($i=0;$i<4;$i++) {$_nmsg .= dechex(mt_rand(0,15)); } $_SESSION['code'] = $_nmsg; echo $_SESSION['code'];/*用ob_clean();函数清理输出缓冲区中的内容*/ ob_clean();//长和高 $_width = 75; $_height = 25; //创建一张图像 $_img = imagecreatetruecolor($_width,$_height); //输出图像 header("Content-Type: image/png"); imagepng($_img); imagedestroy($_img); ?>
加上ob_clean();函数后浏览器输出正常,结果如下,有个 75*25的黑色区域,图片正常输出:
第二种方法:
因为图片是二进制的文件,如果前边有输出(echo print_r等)的话,可能会相当于在图片前面多出某些字节内容,使浏览器输出错误。
解决方法,输出(echo print_r)注释掉 即可。我在这把代码移到后边注释掉。
<?php session_start(); //长和高 $_width = 75; $_height = 25; //创建一张图像 $_img = imagecreatetruecolor($_width,$_height); //输出图像 header("Content-Type: image/png"); imagepng($_img); imagedestroy($_img); //循环出四位 创建随机码 //for ($i=0;$i<4;$i++) //{// $_nmsg .= dechex(mt_rand(0,15)); //} //将随机码保存在session 一个站点session可跨页面持久保存//$_SESSION['code'] = $_nmsg; //echo $_SESSION['code']; ?>
结果 正常输出:
转载于:https://www.cnblogs.com/yangjunnan/p/8005990.html
PHP 用图片输出验证码 无法正常显示相关推荐
- 用来向登录页面输出验证码图片的一般处理程序页面
这是自己以前做的B/S项目中的一个输出验证码图片的页面,没什么技术含量,希望高手们不要嘲笑,只是希望为需要帮助的人尽一点绵薄之力罢了! 页面简介:该页面是一个以ashx 为后缀的一般处理程序页面,用于 ...
- java 输出验证码_输出 验证码图片
[java]代码库package pm_cn.itcast.response; import java.awt.Color; import java.awt.Font; import java.awt ...
- 验证码画布生成以及点击图片切换验证码
//这个验证码画布生成是师兄写的,不是本人写的 1 package com.didinx.common; 2 3 import javax.imageio.ImageIO; 4 import java ...
- BinaryWrite方法输出验证码
在创建网站中验证码是不可或缺的.可以利用BinaryWrite输出二进制图像的方法输出验证码. 在开发图形验证码时,首先生成验证码,然后绘制成图像,最后通过该方法输出到页面中.所以熟练地掌握该方法可以 ...
- 《人工智能实践:Tensorflow笔记》听课笔记22_6.1输入手写数字图片输出识别结果
附:课程链接 第六讲.全连接网络实践 6.1输入手写数字图片输出识别结果 由于个人使用Win7系统,并未完全按照课程所讲,以下记录的也基本是我的结合课程做的Windows系统+PyCharm操作.且本 ...
- 关于Abaqus图片输出的总结
关于Abaqus图片输出的总结 1.改变abaqus界面背景颜色 Aabaqus默认的背景为渐变蓝色,如果想把背景变为白色,方便导出图片,则可以进行以下操作. View-Graphics Option ...
- 【java】opencv + Tesseract(tess4j) 实现图片处理验证码识别
2022/12/27 有的小伙伴说maven导入不了依赖,加了一种方法,百分百解决. 2022/12/28 写了半天,想去论坛放松休息下,结果看到别人已经有成品了,难受啊马飞,晚点看情况要不要写个搭建 ...
- 《用两天学习光线追踪》1.项目介绍和ppm图片输出
本项目参考自教程<Ray Tracing in One Weekend>,在跑通了所有例子之后,加上了自己的理解写成笔记,项目使用CPU多线程提速,并增加了GUI进度显示. 项目链接:ht ...
- php图片输出代码怎么写,将数据以图片的形式输出的PHP代码
<?php echo " "; echo ""; ?> logo.jpg文件和应该是这样写 去见你想见的人吧.趁阳光正好,趁微风不噪,趁繁花还未开至 ...
最新文章
- request.getRemoteAddr()和request.getRemoteHost()
- arm linux嵌入式网络控制系统,基于ARM uCLinux的网络控制系统设计与实现
- vue 怎么在字符串中指定位置插入字符_vue项目中在可编辑div光标位置插入内容的实现代码...
- rtp rtcp rtsp
- php 高效判断是否登录,php 判断用户是否登录
- AssetManager asset的使用
- 【链表】牛客网:合并两个排序的链表
- SecureCRT 查询ORCLE NUMBER字段显示问题
- arm汇编指令集_汇编入门第一篇,小白也能看懂
- 纯小白系列(一)之PC病毒分析
- 空手套白狼的典型案例,利用各方资源一年狂赚300万!
- 墨迹天气3.0引导动画
- 2022半入耳式蓝牙耳机怎么选?半入耳式耳机排行榜
- 74HC595 芯片详细介绍
- 期货开户线上线下开户流程
- HDU 1846 Brave Game 巴士博弈
- pycharm新建python项目等问题
- 简单快速的多图像拼接---百图拼接
- win7 php7 redis扩展,win7 php5.6 redis扩展
- 西北乱跑娃 --- python opencv图像祛噪
热门文章
- div+css 技巧摘录
- MOSS 2007 EventHandler 开发步骤
- c++ sendmessage 鼠标 坐标是相对自身吗_CAD大家都说会:这些知识不知道,你敢说会CAD吗?...
- 很好的分页实例代码(JSP)
- HBase简单代码实例(Java)
- django 与 百度 ueditor 富文本编辑器集成
- Android 自定义ScrollView ListView 体验各种纵向滑动的需求
- Android ViewPager多页面滑动切换以及动画效果---换view
- Java虚拟机的研究与实现
- golang实现生产者和消费者