File name: Originally ValidationCode.php
After changing to validate.php, the verification code can be displayed normally.
The browser requests the code.php file to display the verification code
<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>
This question has been closed, reason: I have found the cause of the problem myself
File name: Originally ValidationCode.php
After changing to validate.php, the verification code can be displayed normally.
The browser requests the code.php file to display the verification code
<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>
Test: Entry Code
<code><?php require_once("ValidationCode.php");//include_once("ValidationCode.php"); $code = new ValidationCode(); //echo $code->createChar(); $code->showImage();</code>
File name:
Test results:
Conclusion: The file name has nothing to do with the class name when including. The result is OK. I don't know why yours can't. But I tested it and it's OK.
It’s really fake! References to file names and class names do not work, so magical! Are there any error messages