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);      }  } 


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>




0 0
原创粉丝点击