


Include does not work when the php file name and class name are the same?
Jul 06, 2016 pm 01:53 PM
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
Reply content:
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

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian

How To Set Up Visual Studio Code (VS Code) for PHP Development
