php验证码不能显示的原因
来源:互联网 发布:冰心和林徽因知乎 编辑:程序博客网 时间:2024/04/30 09:42
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); } }
<?php session_start(); require 'ValidateCode.class.php'; $_vc = new ValidateCode(); $_vc->doimg(); $_SESSION['code'] = $_vc->getCode();?>
<!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>
0 0
- php验证码不能显示的原因
- 织梦DEDECMS验证码不能显示的原因以及解决办法
- PHP 中文验证码不能正确显示的解决方案
- 验证码不能显示
- Struts2 验证 不能生成validateForm_XXX 的原因
- 网页不显示验证码的原因与处理方法
- dede 后台 一直显示验证码不正确的原因
- DedeCms不显示验证码的原因总结
- destoon分页的不能显示的原因
- PHP验证码无法显示的解决方法
- PHP 验证码无法显示的问题
- Android 不能显示右面的键盘原因
- gdb list 不能显示代码的原因
- php 5.3 验证码 不输出的原因 已解决
- php验证码加载不出来的几点原因
- PNG格式图片(验证码..)不能显示的解决办法
- 登录页面不能显示验证码的问题
- 验证码 或 图片 输出不能显示的问题
- 设计模式-------工厂
- 【poj1014】 Dividing
- Android集成微信支付SDK
- 【POJ】[3641]Pseudoprime numbers
- Perl语言入门(04 数组+列表)
- php验证码不能显示的原因
- 新的一周,新的开始!
- Zipper
- PL/SQL连接Oracle64位的方法
- hibernate的事务处理机制以及flush方法的作用
- 数据分析应该要避免的6个错误
- NSDate
- React Native For Android(Windows )配置
- 串口通讯的python模块——pySerial