欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

PHP 用图片输出验证码 无法正常显示

发布时间:2025/5/22 php 94 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 用图片输出验证码 无法正常显示的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。