Home >Backend Development >PHP Tutorial >php验证码可以显示,但放在CI上边就又不显示了!
<code> <?php //application->libraries->MY_Imagecode.php class MY_Imagecode{ private $width ; private $height; private $counts; private $distrubcode; private $fonturl; private $session; function __construct($width = 120, $height=30, $counts=5, $distrubcode="1235467890qwertyuipkjhgfdaszxcvbnm", $fonturl="http://localhost/xampp/jyz/public/AdobeGothicStd-Bold.otf" ){ $this->width=$width; $this->height=$height; $this->counts=$counts; $this->distrubcode=$distrubcode; $this->fonturl=$fonturl; $this->session=$this->sessioncode(); session_start(); $_SESSION['code']=$this->session; } function imageout(){ $im=$this->createimagesource(); $this->setbackgroundcolor($im); $this->set_code($im); $this->setdistrubecode($im); ImageGIF($im); ImageDestroy($im); } private function createimagesource(){ return imagecreate($this->width,$this->height); } private function setbackgroundcolor($im){ $bgcolor = ImageColorAllocate($im, rand(200,255),rand(200,255),rand(200,255)); imagefill($im,0,0,$bgcolor); } private function setdistrubecode($im){ $count_h=$this->height; $cou=floor($count_h*2); for($i=0;$iwidth); $y=rand(0,$this->height); $jiaodu=rand(0,360); $fontsize=rand(8,15); $fonturl=$this->fonturl; $originalcode = $this->distrubcode; $countdistrub = strlen($originalcode); $dscode = $originalcode[rand(0,$countdistrub-1)]; $color = ImageColorAllocate($im, rand(40,140),rand(40,140),rand(40,140)); imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$dscode); } } private function set_code($im){ $width=$this->width; $counts=$this->counts; $height=$this->height; $scode=$this->session; $y=floor($height/2)+floor($height/4); $fontsize=rand(30,35); $fonturl="./AdobeGothicStd-Bold.otf"; $counts=$this->counts; for($i=0;$idistrubcode; $countdistrub=strlen($originalcode); $_dscode=""; $counts=$this->counts; for($j=0;$j <?php //application->Controllers->images.php Header("Content-type:image/GIF"); class images extends CI_Controller{ public function index(){ $this->load->library('MY_Imagecode'); echo $this->MY_Imagecode->imageout(); } } </code>
<code> <?php //application->libraries->MY_Imagecode.php class MY_Imagecode{ private $width ; private $height; private $counts; private $distrubcode; private $fonturl; private $session; function __construct($width = 120, $height=30, $counts=5, $distrubcode="1235467890qwertyuipkjhgfdaszxcvbnm", $fonturl="http://localhost/xampp/jyz/public/AdobeGothicStd-Bold.otf" ){ $this->width=$width; $this->height=$height; $this->counts=$counts; $this->distrubcode=$distrubcode; $this->fonturl=$fonturl; $this->session=$this->sessioncode(); session_start(); $_SESSION['code']=$this->session; } function imageout(){ $im=$this->createimagesource(); $this->setbackgroundcolor($im); $this->set_code($im); $this->setdistrubecode($im); ImageGIF($im); ImageDestroy($im); } private function createimagesource(){ return imagecreate($this->width,$this->height); } private function setbackgroundcolor($im){ $bgcolor = ImageColorAllocate($im, rand(200,255),rand(200,255),rand(200,255)); imagefill($im,0,0,$bgcolor); } private function setdistrubecode($im){ $count_h=$this->height; $cou=floor($count_h*2); for($i=0;$iwidth); $y=rand(0,$this->height); $jiaodu=rand(0,360); $fontsize=rand(8,15); $fonturl=$this->fonturl; $originalcode = $this->distrubcode; $countdistrub = strlen($originalcode); $dscode = $originalcode[rand(0,$countdistrub-1)]; $color = ImageColorAllocate($im, rand(40,140),rand(40,140),rand(40,140)); imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$dscode); } } private function set_code($im){ $width=$this->width; $counts=$this->counts; $height=$this->height; $scode=$this->session; $y=floor($height/2)+floor($height/4); $fontsize=rand(30,35); $fonturl="./AdobeGothicStd-Bold.otf"; $counts=$this->counts; for($i=0;$idistrubcode; $countdistrub=strlen($originalcode); $_dscode=""; $counts=$this->counts; for($j=0;$j <?php //application->Controllers->images.php Header("Content-type:image/GIF"); class images extends CI_Controller{ public function index(){ $this->load->library('MY_Imagecode'); echo $this->MY_Imagecode->imageout(); } } </code>
1、ci中调用library的方式为
<code class="lang-php"><?php //application->Controllers->images.php Header("Content-type:image/GIF"); class images extends CI_Controller{ public function index(){ $this->load->library('MY_Imagecode'); $imagecode = new MY_Imagecode(); //or //$imagecode = null; //$this->load->library('MY_Imagecode', null, $imagecode); $imagecode->imageout(); } } </code>
2、ci中使用session的方式为
<code class="lang-php"> $this->load->library('session'); $this->session->set_userdata(array('code'=>$this->session)); //session_start(); //$_SESSION['code']=$this->session; </code>