php验证码不能显示的原因
1.gd库未打开
2.编码错误 应该为无bom的utf-8
解决方法:http://jingyan.baidu.com/article/c275f6ba241e4ee33c756710.html
3.header 前应加上ob_clean();
4. "../xxx.php"的路径 改为 "xxx.php"
附上好用之后的代码
Validat
<?php
//验证码类
class ValidateCode {
private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ'; //随机因子 private $code; //验证码 private $codelen = 4; //验证码长度 private $width = 130; //宽度 private $height = 50; //高度 private $img; //图形资源句柄 private $font; //指定的字体 private $fontsize = 20; //指定字体大小 private $fontcolor; //指定字体颜色 //构造方法初始化 public function __construct() { $this->font = 'Elephant.ttf'; } //生成随机码 private function createCode() { $_len = strlen($this->charset)-1; for ($i=0;$i<$this->codelen;$i++) { $this->code .= $this->charset[mt_rand(0,$_len)]; } } //生成背景 private function createBg() { $this->img = imagecreatetruecolor($this->width, $this->height); $color = imagecolorallocate($this->img, mt_rand(157,255), mt_rand(157,255), mt_rand(157,255)); imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color); } //生成文字 private function createFont() { $_x = $this->width / $this->codelen; for ($i=0;$i<$this->codelen;$i++) { $this->fontcolor = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]); } } //生成线条、雪花 private function createLine() { for ($i=0;$i<6;$i++) { $color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)); imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color); } for ($i=0;$i<100;$i++) { $color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)); imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color); } } //输出 private function outPut() { ob_clean();header('Content-type:image/png'); imagepng($this->img); imagedestroy($this->img); } //对外生成 public function doimg() { $this->createBg(); $this->createCode(); $this->createLine(); $this->createFont(); $this->outPut(); } //获取验证码 public function getCode() { return strtolower($this->code); }
}
code.php
<?php session_start();require 'ValidateCode.class.php';$_vc = new ValidateCode();$_vc->doimg();$_SESSION['code'] = $_vc->getCode();
?>
login.html
<!DOCTYPE HTML>
<head><meta charset="utf-8"><title>login</title>
</head>
<html>
<body><form action="login.php" method="post"><input type="text" name="name" placeholder="用户名"><br><input type="password" name="password" placeholder="密码"><br><input type="text" name="code" placeholder="验证码"><img src="code.php" /><br><input type="submit"></form> <a href="register.php">还没有账号?点击这里注册</a>
</body>
</html>
php验证码不能显示的原因相关推荐
- ThinkPHP5验证码不显示的原因及解决方法
ThinkPHP5验证码不显示的原因及解决方法 参考文章: (1)ThinkPHP5验证码不显示的原因及解决方法 (2)https://www.cnblogs.com/shengxihui/p/112 ...
- PHP验证码无法显示的原因
2019独角兽企业重金招聘Python工程师标准>>> 一.如果是utf-8,就有可能是BOM没有清除 二.在Header("Content-type: image/PNG ...
- Kaggle账号注册时验证码无法显示问题解决方法
学习机器学习,想用深度神经网络做一个猫狗识别的程序,然后到kaggle上下载训练集猫狗图片,奈何一直出现验证码未填写的情况.看了很多文章说是要下载谷歌浏览器还有助手什么的,想起手机之前有个浏览器,一直 ...
- dede 验证码不显示 vdimgck.php,Dede后台验证码不显示解决方法详解(dedecms 5.7)
本地与服务器上安装了dedecms5.7无法显示验证码,一般这种情况很少见,一般情况就是服务器设置问题,还有临时目录的权限问题. Dede后台验证码不显示或不正常分三种情况,下面来逐一分析 Dede后 ...
- startsBBS在nginx环境下的部署,出现布局错误和验证码不能显示的解决方法
问题:提示404 原因:没有配置url重写 解决:nginx 不支持pathinfo 模式 需要修改配置,方法如下 STB配置 打开 STB 的 config.php 文件修改如下: $config[ ...
- linux+tomcat+jdk环境验证码无法显示
我的环境配置:RHEL6.5+tomcat6+jdk1.6 今天遇到一个奇怪的现象,我的tomcat启动起来之后,网站无法显示验证码,导致无法登陆.我的tomcat启动过程是这样的: 我有一个进程守护 ...
- dede 验证码不显示 vdimgck.php,织梦(dedecms)后台登录验证码不显示或不正常的解决方法...
随着互联网的快速发展,站长已经成为了互联网中的新兴人群,而其中建站使用的cms以织梦居多,伴随着人数的增多,在使用织梦cms中遇到的问题也越来越多,其中最棘手的问题莫过于验证码无法显示而导致无法登陆后 ...
- 服务器时间 验证码不显示,时间不同步导致网页验证码不能正常显示解决方法...
症状:在电影服务器上能够正常显示,在游戏服务器上显示不正常,下面客户机显示不正常.有时候输入个别网页和程序的验证码要输入几十次才能正常.操作系统其他地方的系统都是一样的. 尝试了各种各样的关于验证码显 ...
- 360极速浏览器以及360安全浏览器在兼容模式下验证码图片显示不来,但是极速模式可以显示?
问题 最近遇到一个验证码出不来的问题,在360极速浏览器以及360安全浏览器在兼容模式下验证码图片显示不来,效果如下: 这个验证码的代码元素如下,是一张图片,由接口提供的一个图片链接,返回的是文件流. ...
最新文章
- Git 笔记 上传文件至github
- Java创建线程的三种方式,以前只知道两种,现在添加一种Callable与FutureTask创建的方式
- 前端学习(2161):vuecli项目得目录结构解析
- 在c语言中优先级最低的是6,C语言中 *,<<,= ,->哪个优先级最低
- React- jsx的使用可以渲染html标签 或React组件
- 《高阶Perl》——3.8 对象方法里的缓存
- IBM新创AI病毒:想打谁就打谁,看脸发作绝不误伤,隐蔽性极强
- Android Studio如何隐藏系统的状态栏
- 数仓系列 | Flink 窗口的应用与实现
- 从零开始实现一个简易的Java MVC框架(四)--实现AOP
- spring源码-第四个后置处理器
- 【湖南集训 4.2】正12面体
- 找到弹窗广告所在的程序文件位置
- Cubieboard CC-A80性能之Ubuntu Linaro编译安装Node.js
- 基于python实现resnet_【Tensorflow系列】使用Inception_resnet_v2训练自己的数据集并用Tensorboard监控...
- 爱你的人和你爱的人 你选哪个?
- Addressable设置的要点
- 推荐一个免费的PDF在线编辑网站
- (一)数据后端之逻辑综合
- ios12升级, App应用崩溃闪退
热门文章
- win10刻录光盘失败,一直显示有准备好写入到光盘中的文件
- 恢复视力的辅助训练方法
- smarthosts
- python——根据公司名称查找公司地址(批量)、随机生成姓名、随机生成手机号
- 一个精壮的代购骗子被我彻底征服
- python中dump 和dumps load和loads的区别
- 断舍离-你之所以无法放手的原因
- 可保存在文件中的通讯录
- IT名词备忘录——汇编
- php给qq好友发消息,“您需要添加对方为好友+才能给对方发送会话消息”QQ解决办法 ......