ecshop验证码

作者: 编程应用  发布:2019-09-26
<?php//仿制ecshop验证码(四位大写字母和数字、背景)//处理码值(四位大写字母和数字组成)//所有的可能的字符集合$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';$chars_len = strlen; //集合长度//随机选取$code_len = 4;//验证码长度$code=''; //验证码值初始化for($i=0;$i<$code_len;++$i){    //随机取得一个字符下标    $rand_index = mt_rand(0,$chars_len-1);    //利用字符串的下标操做,获得选择的字符    $code .= $chars[$rand_index];}//echo $code;//存储于session中session_start();$_SESSION['code'] = $code;//验证码图像//处理背景$bg_file= './captcha/captcha_bg' . mt_rand. '.jpg';//依据该图片,创建画布$image = imagecreatefromjpeg;//简单的将字符串写在画布上的函数(imageString//imageString(画布,字体,位置X, 位置y,字符串内容,颜色); //字体:imagestring函数,使用的内置字体。由1-5表示。位置由字符串左上角的坐标决定。颜色也是需要预先分配好的。imagecolorallocate();//分配字体颜色(随机分配黑色或者白色)if(mt_rand{        $str_color = imagecolorallocate($image,0,0,0); //黑色    }else{        $str_color = imagecolorallocate($image,255,0xff,255);//白色}//内置5号字体$font = 5;//位置//画布大小$image_w = imagesx;$image_h = imagesy;//获得字体的宽和高$font_w = imagefontwidth;$font_h = imagefontheight;//获得字符串的宽高$str_w = $font_w * $code_len;$str_h = $font_h;//计算位置$str_x = ($image_w-$str_w) / 2;$str_y = ($image_h-$str_h) / 2;//字符串imagestring($image,$font,$str_x,$str_y,$code,$str_color);//输出和销毁画布header("content-type:image/jpeg");imagejpeg;imagedestroy;

封装验证码工具类:

<?php//验证码工具类(将所有和验证码操作相关的全部封装到该类中)        class Captcha{            /*生成验证码*/        public function makeImage($code_len=4){        //仿制ecshop验证码(四位大写字母和数字、背景)        //处理码值(四位大写字母和数字组成)        //所有的可能的字符集合        $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';        $chars_len = strlen; //集合长度        //随机选取        $code=''; //验证码值初始化        for($i=0;$i<$code_len;++$i){            //随机取得一个字符下标            $rand_index = mt_rand(0,$chars_len-1);            //利用字符串的下标操做,获得选择的字符            $code .= $chars[$rand_index];        }        //echo $code;        //存储于session中        @session_start();        $_SESSION['code'] = $code;        //验证码图像        //处理背景        $bg_file= TOOL . './captcha/captcha_bg' . mt_rand. '.jpg';        //依据该图片,创建画布        $image = imagecreatefromjpeg;        //简单的将字符串写在画布上的函数(imageString        //imageString(画布,字体,位置X, 位置y,字符串内容,颜色);         //字体:imagestring函数,使用的内置字体。由1-5表示。位置由字符串左上角的坐标决定。颜色也是需要预先分配好的。imagecolorallocate();        //分配字体颜色(随机分配黑色或者白色)        if(mt_rand{                $str_color = imagecolorallocate($image,0,0,0); //黑色            }else{                $str_color = imagecolorallocate($image,255,0xff,255);//白色        }        //内置5号字体        $font = 5;        //位置        //画布大小        $image_w = imagesx;        $image_h = imagesy;        //获得字体的宽和高        $font_w = imagefontwidth;        $font_h = imagefontheight;        //获得字符串的宽高        $str_w = $font_w * $code_len;        $str_h = $font_h;        //计算位置        $str_x = ($image_w-$str_w) / 2;        $str_y = ($image_h-$str_h) / 2;        //字符串        imagestring($image,$font,$str_x,$str_y,$code,$str_color);        //输出和销毁画布        header("content-type:image/jpeg");        imagejpeg;        imagedestroy;    }}

本文由金沙澳门官网送注册58发布于编程应用,转载请注明出处:ecshop验证码

关键词: