php解决验证码无法显示的问题的方法:1、检查php代码,确保代码全部正确;2、编辑php.ini配置文件,修改【extension = php_gd2.dll】;3、清除缓存区;4、重新启动apache服务器。
PHP解决验证码无法显示的方法:
(推荐教程:php视频教程)
第一步:先确保代码没有写错
第二步:确保gd扩展库的开启
立即学习“PHP免费学习笔记(深入)”;
在php.ini在设置:extension=php_gd2.dll
第三步:清除缓存区
PHP关于缓存区的三个函数
ob_get_contents() – 返回输出缓冲区的内容
ob_flush() – 冲刷出(送出)输出缓冲区中的内容
ob_clean() – 清空(擦掉)输出缓冲区
ob_end_flush() – 冲刷出(送出)输出缓冲区内容并关闭缓冲
ob_end_clean() – 清空(擦除)缓冲区并关闭输出缓冲
flush() – 刷新输出缓冲
第四步:重新启动Apache服务器并再次运行
代码实现:
//Captcha.class.php文件名codelen = $codelen;$this->width = $width;$this->height = $height;$this->fontsize = $fontsize;$this->fontfile = ".\Public\Home\Fonts\msyh.ttc";$this->code = $this->createCode();$this->img = $this->createImg();$this->createBg(); //给画布添加背景色$this->createText(); //写入字符串$this->line(); //增加干扰线$this->outPut(); //输出图像}//私有的生成验证码随机字符串private function createCode(){//产生随机的字符串数组$arr_str = array_merge(range('a', 'z'),range('A', 'Z'),range(0,9));//打乱数组shuffle($arr_str);shuffle($arr_str);//从数组中随机指定个数下标$arr_index = array_rand($arr_str,$this->codelen);//循环下标数组,构建随机字符串$str ="";foreach ($arr_index as $i) {$str .=$arr_str[$i];}//将验证码字符串存入sess$_SESSION['captcha'] = $str;return $str;}//私有的创建一个空画布private function createImg(){return imagecreatetruecolor($this->width, $this->height);}//私有的分配画布背景色private function createBg(){$bgcolor = imagecolorallocate($this->img, mt_rand(0,255), mt_rand(0,200), mt_rand(100,255));//绘制带背景的矩形imagefilledrectangle($this->img, 0, 0,$this->width,$this->height, $bgcolor);}//私有的写入验证码字符串private function createText(){//给文本分配颜色$color = imagecolorallocate($this->img, mt_rand(100,255), mt_rand(0,200), mt_rand(100,200));//写入字符串imagettftext($this->img, $this->fontsize, -12, 10, 20, $color, $this->fontfile, $this->code);//imagestring($this->img, $this->fontsize, 8, 8, $this->code, $color);}//私有的输出图像private function line(){//增加干扰线for($n=1;$ncodelen;$n++){$linecolor = imagecolorallocate($this->img, mt_rand(0,200), mt_rand(0,200), mt_rand(0,200));imageline($this->img,mt_rand(0,80), mt_rand(0,30), mt_rand(0,100), mt_rand(0,30), $linecolor);}}//公共的输出图像private function outPut(){//声明输出的内容的类型header("content-type:image/png");//输出图像imagepng($this->img);//销毁图像资源imagedestroy($this->img);}}
登录后复制
MVC设计模式(部分代码如下)
<?php //LoginController.class.php文件名//定义最终的登录控制器类final class LoginController{//创建验证码类对象public function captcha(){ob_clean();// 清空(擦掉)输出缓冲区//新建Captcha类对象;由于Captcha类只有一个公共的构造方法;新建对象时对调用构造方法里面传递的所有方法;$obj=new Captcha();}}
登录后复制
lnbsp;html>login
登录后复制
相关推荐:php培训
以上就是php怎么解决验证码无法显示的问题的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2119038.html