时间:2021-07-01 10:21:17 帮助过:2人阅读
- <code><!--?php
- class ValidationCode{
- private $width;
- private $height;
- private $num_chars;
- private $image;
- const BORDER = 1;
- function __construct($width=60,$height=20,$num_chars=4){
- $this--->width = $width;
- $this->height = $height;
- $this->num_chars = $num_chars;
- }
- function showImage(){
- $this->createImage();
- $this->drawBorder();
- $this->drawChars();
- $this->outPic();
- }
- //create canvas
- function createImage(){
- $this->image = imagecreate($this->width,$this->height);
- //$rand_color = imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
- $back = imagecolorallocate($this->image,0,0,0);
- $border = imagecolorallocate($this->image,255,255,255);
- imagefill($this->image,0,0,$back);
- //imagefilledrectangle($thid->image,self::BORDER,self::BORDER,$this->width-self::BORDER,$this->height-self::BORDER,$border);
- //imageline($this->image,1,1,100,100,$rand_color);
- //$this->outPic();
- }
- //draw border
- private function drawBorder(){
- $outer_bg_color = imagecolorallocate($this->image,0,0,0);
- $inner_bg_color = imagecolorallocate($this->image,255,255,255);
- imagefill($this->image,0,0,$outer_bg_color);
- imagefilledrectangle($this->image,self::BORDER,self::BORDER,$this->width-self::BORDER-1,$this->height-self::BORDER-1,$inner_bg_color);
- }
- //create char content
- function createChar(){
- $rand_ascii="";
- $rand_type = rand(0,2);
- switch($rand_type){
- case 0:
- $rand_ascii = rand(48,57);
- break;
- case 1:
- $rand_ascii = rand(65,90);
- break;
- case 2:
- $rand_ascii = rand(97,122);
- break;
- }
- $rand_str = sprintf("%c",$rand_ascii);
- return $rand_str;
- }
- //draw char
- private function drawChars(){
- $x = $this->width/$this->num_chars+1;
- $y = $this->height/2;
- for($index = 0; $index<$this->num_chars; $index++){
- $rand_color = imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
- imagechar($this->image,3,$x*$index+2,$y-$y/2,$this->createChar(),$rand_color);
- }
- }
- //out pic
- private function outPic(){
- header("content-type:image/png");
- imagepng($this->image);
- }
- function __destruct(){
- imagedestroy($this->image);
- }
- }
- /*$code = new ValidationCode();
- //echo $code->createChar();
- $code->showImage();*/
- ?></code>
code.php
- <code><!--?php
- require_once("validate.php");
- $code = new ValidationCode();
- //echo $code--->createChar();
- $code->showImage();
- ?></code>
这个问题已被关闭,原因:已经自己找到问题原因
文件名:原来为ValidationCode.php
修改为validate.php后可以正常显示验证码,
浏览器中请求code.php文件中进行显示验证码
- <code><!--?php
- class ValidationCode{
- private $width;
- private $height;
- private $num_chars;
- private $image;
- const BORDER = 1;
- function __construct($width=60,$height=20,$num_chars=4){
- $this--->width = $width;
- $this->height = $height;
- $this->num_chars = $num_chars;
- }
- function showImage(){
- $this->createImage();
- $this->drawBorder();
- $this->drawChars();
- $this->outPic();
- }
- //create canvas
- function createImage(){
- $this->image = imagecreate($this->width,$this->height);
- //$rand_color = imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
- $back = imagecolorallocate($this->image,0,0,0);
- $border = imagecolorallocate($this->image,255,255,255);
- imagefill($this->image,0,0,$back);
- //imagefilledrectangle($thid->image,self::BORDER,self::BORDER,$this->width-self::BORDER,$this->height-self::BORDER,$border);
- //imageline($this->image,1,1,100,100,$rand_color);
- //$this->outPic();
- }
- //draw border
- private function drawBorder(){
- $outer_bg_color = imagecolorallocate($this->image,0,0,0);
- $inner_bg_color = imagecolorallocate($this->image,255,255,255);
- imagefill($this->image,0,0,$outer_bg_color);
- imagefilledrectangle($this->image,self::BORDER,self::BORDER,$this->width-self::BORDER-1,$this->height-self::BORDER-1,$inner_bg_color);
- }
- //create char content
- function createChar(){
- $rand_ascii="";
- $rand_type = rand(0,2);
- switch($rand_type){
- case 0:
- $rand_ascii = rand(48,57);
- break;
- case 1:
- $rand_ascii = rand(65,90);
- break;
- case 2:
- $rand_ascii = rand(97,122);
- break;
- }
- $rand_str = sprintf("%c",$rand_ascii);
- return $rand_str;
- }
- //draw char
- private function drawChars(){
- $x = $this->width/$this->num_chars+1;
- $y = $this->height/2;
- for($index = 0; $index<$this->num_chars; $index++){
- $rand_color = imagecolorallocate($this->image,rand(0,255),rand(0,255),rand(0,255));
- imagechar($this->image,3,$x*$index+2,$y-$y/2,$this->createChar(),$rand_color);
- }
- }
- //out pic
- private function outPic(){
- header("content-type:image/png");
- imagepng($this->image);
- }
- function __destruct(){
- imagedestroy($this->image);
- }
- }
- /*$code = new ValidationCode();
- //echo $code->createChar();
- $code->showImage();*/
- ?></code>
code.php
- <code><!--?php
- require_once("validate.php");
- $code = new ValidationCode();
- //echo $code--->createChar();
- $code->showImage();
- ?></code>
测试:入口代码
- <code><!--?php
- require_once("ValidationCode.php");//include_once("ValidationCode.php");
- $code = new ValidationCode();
- //echo $code--->createChar();
- $code->showImage();</code>
文件名:
测试结果:
结论:include的时候文件名跟类名没有关系。结果是可以的。我不知道你的为什么不可以。但是我测了是可以的。
真的假的啊!文件名和类名一样引用不起作用,这么神奇!有没有出什么错误提示