原生php验证码

本文介绍了一种使用PHP在Yii框架下生成验证码的方法。通过创建包含随机字符的图片,并将其发送到客户端显示,同时将验证码字符串保存在session中以便后续验证。文章详细展示了如何设置颜色、绘制验证码字符和增加干扰元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
     * 验证码
     * @return [type] [description]
     */
    public function actionCode(){
        $session = yii::$app->session;  //开启session
        header("Content-type:image/png");//生成验证码图片
        $str = "1,2,3,4,5,6,7,8,9,a,b,c,d,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";//要显示的字符,可自己进行增删
        $list = explode(",",$str); //分隔成一维数组
        $cmax = count($list)-1;
        $verifyCode = '';
        $verifyCodelength = 4;    //设置验证码长度
        for($i=0;$i<$verifyCodelength;$i++ ){
              $randnum = mt_rand(0,$cmax);
              $verifyCode .= $list[$randnum];  //取出字符,组合成为我们要的验证码字符
        }
        $session['code'] = md5($verifyCode);    //将字符放入SESSION中
        $im = imagecreate(50,17);                //生成图片
        $black = imagecolorallocate($im, 0,0,90);     //此条及以下三条为设置的颜色
        $white = imagecolorallocate($im, 80,255,180);
        $gray = imagecolorallocate($im, 200,200,160);
        $red = imagecolorallocate($im, 255, 0, 0);
        imagefill($im,0,0,$white);     //给图片填充颜色
        imagestring($im,5,7,0, $verifyCode, $black);   //将验证码绘入图片
        for($i=0;$i<50;$i++){   //加入干扰象素
            imagesetpixel($im,rand(0,50),rand(0,17),$black);    //加入点状干扰素
            imagesetpixel($im,rand(0,50),rand(0,17),$gray);
            //imageline($im,rand(),rand(),rand(),rand(),$red);    //加入线条状干扰素
        }
        for($i=0;$i<2;$i++){
            imagearc($im,rand(0,50),rand(0,17),50,17, 75, 170, $black);    //加入弧线状干扰素
        }
        imagepng($im);    //将图片指接送到浏览器端
        imagedestroy($im);  //释放与image关联的内存
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值