当前位置:Gxlcms > PHP教程 > php验证码可以显示,但放在CI上边就又不显示了!

php验证码可以显示,但放在CI上边就又不显示了!

时间:2021-07-01 10:21:17 帮助过:15人阅读

    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;$i<$cou;$i++){
    $x=rand(0,$this->width);
    $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;$i<$counts;$i++){
    $char=$scode[$i];
    $x=floor($width/$counts)*$i+8;
    $jiaodu=rand(-20,30);
    $color = ImageColorAllocate($im,rand(0,50),rand(50,100),rand(100,140));
    imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$char);
    }
    }
    private function sessioncode(){
    $originalcode=$this->distrubcode;
    $countdistrub=strlen($originalcode);
    $_dscode="";
    $counts=$this->counts;
    for($j=0;$j<$counts;$j++){
    $dscode=$originalcode[rand(0,$countdistrub-1)];
    $_dscode.=$dscode;
    }
    return $_dscode;
    }
    }
    ?>
    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();
    }
    }

回复内容:

    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;$i<$cou;$i++){
    $x=rand(0,$this->width);
    $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;$i<$counts;$i++){
    $char=$scode[$i];
    $x=floor($width/$counts)*$i+8;
    $jiaodu=rand(-20,30);
    $color = ImageColorAllocate($im,rand(0,50),rand(50,100),rand(100,140));
    imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$char);
    }
    }
    private function sessioncode(){
    $originalcode=$this->distrubcode;
    $countdistrub=strlen($originalcode);
    $_dscode="";
    $counts=$this->counts;
    for($j=0;$j<$counts;$j++){
    $dscode=$originalcode[rand(0,$countdistrub-1)];
    $_dscode.=$dscode;
    }
    return $_dscode;
    }
    }
    ?>
    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();
    }
    }

1、ci中调用library的方式为

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

    }
}

2、ci中使用session的方式为

    $this->load->library('session');
    $this->session->set_userdata(array('code'=>$this->session));
    //session_start();
    //$_SESSION['code']=$this->session;

人气教程排行