最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 正文概述
  • 评价建议
  • 大家有没有觉得帝国cms默认的的图形验证码很难看,就顺手在重新写了下,外观比之前漂亮,同时使用弧线和直线,增强了干扰能力;双击图片可以不刷新页面更换验证码,默认的需要刷新页面。

    使用方法:

    1.将e文件直接复制到网站根目录;

    2.开启 网站后台->系统参数->用户设置->会员登陆验证码和会员注册验证码;

    3.不要设置 网站后台->系统参数->基本属性->验证码配色 保持最初默认值即可;

    4.(可选)设置完后,认证码图片会比input输入框高可以用下面代码替换 ,同时用onclick不刷新页面更换验证码,兼容帝国7.0、7.2以及7.5版本。

    模版->动态页面模版管理->会员登录页面

    源代码:<img src=”../../ShowKey/?v=login”/>

    修改为:<img src=”../../ShowKey/?v=login” onclick=”javascript:this.src=’../../ShowKey/?v=login&tm=+Math.random();'”  style=”vertical-align:middle”/> <span style=”color:#666;vertical-align:bottom”>  (点击图片更换)</span>

    其他需要验证码的地方(如注册、评论等)修改方法类似

    以下是源代码,懂php的可以进一步开发:

    <?php
    require('../class/connect.php');
    //取得随机数
    function domake_password($pw_length){
            global $public_r;
            if($public_r['keytog']==1)//字母
            {
                    $low_ascii_bound=65;
                    $upper_ascii_bound=90;
                    $notuse=array(91);
            }
            elseif($public_r['keytog']==2)//数字+字母
            {
                    $low_ascii_bound=50;
                    $upper_ascii_bound=90;
                    $notuse=array(58,59,60,61,62,63,64,73,79);
            }
            else//数字
            {
                    $low_ascii_bound=48;
                    $upper_ascii_bound=57;
                    $notuse=array(58);
            }
            while($i<$pw_length)
            {
                    mt_srand((double)microtime()*1000000);
                    $randnum=mt_rand($low_ascii_bound,$upper_ascii_bound);
                    if(!in_array($randnum,$notuse))
                    {
                            $password1=$password1.chr($randnum);
                            $i++;
                    }
            }
            return $password1;
    }
    //返回颜色
    function ReturnShowKeyColor($img){
            global $public_r;
            //背景色
            if($public_r['keybgcolor'])
            {
                    $bgcr=ToReturnRGB($public_r['keybgcolor']);
                    $r['bgcolor']=imagecolorallocate($img,$bgcr[0],$bgcr[1],$bgcr[2]);
            }
            else
            {
                    $r['bgcolor']=imagecolorallocate($img,245,rand(225,255),225);
            }
            //文字色
            if($public_r['keyfontcolor'])
            {
                    $fcr=ToReturnRGB($public_r['keyfontcolor']);
                    $r['fontcolor']=ImageColorAllocate($img,$fcr[0],$fcr[1],$fcr[2]);
            }
            else
            {
                    $r['fontcolor']=ImageColorAllocate($img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
            }
            //干扰色
            if($public_r['keydistcolor'])
            {
                    $dcr=ToReturnRGB($public_r['keydistcolor']);
                    $r['distcolor']=ImageColorAllocate($img,$dcr[0],$dcr[1],$dcr[2]);
            }
            else
            {
                    $r['distcolor']=ImageColorAllocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
            }
            return $r;
    }
    //显示验证码
    function ShowKey($v){
            $vname=ecmsReturnKeyVarname($v);
            $key=strtolower(domake_password(4));
            ecmsSetShowKey($vname,$key);
            //是否支持gd库
            if (function_exists("imagegif")) 
            {
                    header("Content-type: image/gif");
                    $img=imagecreate(80,26);
                    $colorr=ReturnShowKeyColor($img);
                    $bgcolor=$colorr['bgcolor'];
                    $fontcolor=$colorr['fontcolor'];
                    $distcolor=$colorr['distcolor'];
                    imagefill($img,0,0,$bgcolor);
                    
                    for($i=0;$i<90;$i++) //加入干扰象素
                    {
                            imagesetpixel($img,rand()%70,rand()%30,$distcolor);
                    }
                    for($i=0;$i<8;$i++){//加入干扰弧线
                    imagearc ($img,rand(0,360),rand(0,360),rand(200,350),rand(200,360),10,10,imagecolorallocate($img, rand(0,225), rand(0,225),rand(0,225)));
                    }
            for($i=0;$i<4;$i++){//加入干扰直线
                    imageline ($img,rand(0,2),rand(0,27),rand(80,80),rand(1,28),imagecolorallocate($img, mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)));
                    }
                    for($i=0;$i<4;$i++){
                     $charcolor=imagecolorallocate($img, mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
                     imagettftext ($img,rand(12,16),rand(-30,30),$i*20+2,rand(16,22),$charcolor,"STENCIL.TTF",$key[$i]);
                    }
                    imagegif($img);
                    imagedestroy($img);
            }
            elseif(function_exists("imagejpeg")) 
            {
                    header ("Content-type: image/jpeg");
                    $img=imagecreate(80,26);
                    $colorr=ReturnShowKeyColor($img);
                    $bgcolor=$colorr['bgcolor'];
                    $fontcolor=$colorr['fontcolor'];
                    $distcolor=$colorr['distcolor'];
                    imagefill($img,0,0,$bgcolor);
                    
                    for($i=0;$i<90;$i++) //加入干扰象素
                    {
                            imagesetpixel($img,rand()%70,rand()%30,$distcolor);
                    }
                    for($i=0;$i<8;$i++){//加入干扰弧线
                    imagearc ($img,rand(0,360),rand(0,360),rand(200,350),rand(200,360),10,10,imagecolorallocate($img, rand(0,225), rand(0,225),rand(0,225)));
                    }
            for($i=0;$i<4;$i++){//加入干扰直线
                    imageline ($img,rand(0,2),rand(0,27),rand(80,80),rand(1,28),imagecolorallocate($img, mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)));
                    }
                    for($i=0;$i<4;$i++){
                     $charcolor=imagecolorallocate($img, mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
                     imagettftext ($img,rand(12,16),rand(-30,30),$i*20+2,rand(16,22),$charcolor,"STENCIL.TTF",$key[$i]);
                    }
                    imagejpeg($img);
                    imagedestroy($img);
            }
            elseif (function_exists("imagepng"))
            {
                    header ("Content-type: image/png");
                    $img=imagecreate(80,26);
                    $colorr=ReturnShowKeyColor($img);
                    $bgcolor=$colorr['bgcolor'];
                    $fontcolor=$colorr['fontcolor'];
                    $distcolor=$colorr['distcolor'];
                    imagefill($img,0,0,$bgcolor);
                    
                    for($i=0;$i<90;$i++) //加入干扰象素
                    {
                            imagesetpixel($img,rand()%70,rand()%30,$distcolor);
                    }
                    for($i=0;$i<8;$i++){//加入干扰弧线
                    imagearc ($img,rand(0,360),rand(0,360),rand(200,350),rand(200,360),10,10,imagecolorallocate($img, rand(0,225), rand(0,225),rand(0,225)));
                    }
            for($i=0;$i<4;$i++){//加入干扰直线
                    imageline ($img,rand(0,2),rand(0,27),rand(80,80),rand(1,28),imagecolorallocate($img, mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)));
                    }
                    for($i=0;$i<4;$i++){
                     $charcolor=imagecolorallocate($img, mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
                     imagettftext ($img,rand(12,16),rand(-30,30),$i*20+2,rand(16,22),$charcolor,"STENCIL.TTF",$key[$i]);
                    }
                    imagepng($img);
                    imagedestroy($img);
            }
            
            elseif (function_exists("imagewbmp")) 
            {
                    header ("Content-type: image/vnd.wap.wbmp");
                    $img=imagecreate(80,26);
                    $colorr=ReturnShowKeyColor($img);
                    $bgcolor=$colorr['bgcolor'];
                    $fontcolor=$colorr['fontcolor'];
                    $distcolor=$colorr['distcolor'];
                    imagefill($img,0,0,$bgcolor);
                    
                    for($i=0;$i<90;$i++) //加入干扰象素
                    {
                            imagesetpixel($img,rand()%70,rand()%30,$distcolor);
                    }
                    for($i=0;$i<8;$i++){//加入干扰弧线
                    imagearc ($img,rand(0,360),rand(0,360),rand(200,350),rand(200,360),10,10,imagecolorallocate($img, rand(0,225), rand(0,225),rand(0,225)));
                    }
            for($i=0;$i<4;$i++){//加入干扰直线
                    imageline ($img,rand(0,2),rand(0,27),rand(80,80),rand(1,28),imagecolorallocate($img, mt_rand(0,156),mt_rand(0,156),mt_rand(0,156)));
                    }
                    for($i=0;$i<4;$i++){
                     $charcolor=imagecolorallocate($img, mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
                     imagettftext ($img,rand(12,16),rand(-30,30),$i*20+2,rand(16,22),$charcolor,"STENCIL.TTF",$key[$i]);
                    }
                    imagewbmp($img);
                    imagedestroy($img);
            }
            else
            {
                    ecmsSetShowKey($vname,'ecms');
                    echo ReadFiletext("../data/images/ecms.gif");
            }
    }
    //返回变量名
    function ecmsReturnKeyVarname($v){
            if($v=='login')//登陆
            {
                    $name='checkloginkey';
            }
            elseif($v=='reg')//注册
            {
                    $name='checkregkey';
            }
            elseif($v=='info')//信息
            {
                    $name='checkinfokey';
            }
            elseif($v=='spacefb')//空间反馈
            {
                    $name='checkspacefbkey';
            }
            elseif($v=='spacegb')//空间留言
            {
                    $name='checkspacegbkey';
            }
            elseif($v=='gbook')//留言
            {
                    $name='checkgbookkey';
            }
            elseif($v=='feedback')//反馈
            {
                    $name='checkfeedbackkey';
            }
            elseif($v=='getpassword')//取回密码
            {
                    $name='checkgetpasskey';
            }
            elseif($v=='regsend')//重发激活邮件
            {
                    $name='checkregsendkey';
            }
            else//评论pl
            {
                    $name='checkplkey';
            }
            return $name;
    }
    $v=$_GET['v'];
    ShowKey($v);
    ?>

    网站无忧 » 帝国cms升级为好看的图形验证码 帝国cms验证码美化 支持7.0~7.5

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者
    升级SVIP尊享更多特权立即升级