网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

php中怎么实现一个验证码功能

php中怎么实现一个验证码功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

站在用户的角度思考问题,与客户深入沟通,找到蠡县网站设计与蠡县网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、空间域名、网络空间、企业邮箱。业务覆盖蠡县地区。

新建一个captcha.php:

php     //10>设置session,必须处于脚本最顶部     session_start();      $image = imagecreatetruecolor(100, 30);        //1>设置验证码图片大小的函数     //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);     $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff     //6>区域填充 int imagefill(int im, int x, int y, int col)  (x,y) 所在的区域着色,col 表示欲涂上的颜色     imagefill($image, 0, 0, $bgcolor);     //10>设置变量     $captcha_code = "";     //7>生成随机数字     for($i=0;$i<4;$i++){         //设置字体大小         $fontsize = 6;                 //设置字体颜色,随机颜色         $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));            //0-120深颜色         //设置数字         $fontcontent = rand(0,9);         //10>.=连续定义变量         $captcha_code .= $fontcontent;             //设置坐标         $x = ($i*100/4)+rand(5,10);         $y = rand(5,10);          imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);     }     //10>存到session     $_SESSION['authcode'] = $captcha_code;     //8>增加干扰元素,设置雪花点     for($i=0;$i<200;$i++){         //设置点的颜色,50-200颜色比数字浅,不干扰阅读         $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));                 //imagesetpixel — 画一个单一像素         imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);     }     //9>增加干扰元素,设置横线     for($i=0;$i<4;$i++){         //设置线的颜色         $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));         //设置线,两点一线         imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor);     }      //2>设置头部,image/png     header('Content-Type: image/png');     //3>imagepng() 建立png图形函数     imagepng($image);     //4>imagedestroy() 结束图形函数  销毁$image     imagedestroy($image);

接着就是静态页的代码了:index.html

  1. doctype html> 

  2.  

  3.      

  4.          

  5.         确认验证码title> </p></li><li><p>    head> </p></li><li><p>    <body> </p></li><li><p>        <form method="post" action="./form.php"> </p></li><li><p>            <p>验证码: <img id="captcha_img" border='1' src='./captcha.php?r=echo rand(); ?>' style="width:100px; height:30px" /> </p></li><li><p>                <a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?a> </p></li><li><p>            p> </p></li><li><p>            <P>请输入验证码:<input type="text" name='authcode' value=''/>p> </p></li><li><p>            <p><input type='submit' value='提交' style='padding:6px 5px;'/>p>     </p></li><li><p>    body> </p></li><li><p>html></p></li></ol></pre><p>从index.html可以看到,提交的表单是到form.php的,所以还要有一个判断的form.php代码:</p><pre><ol><li><p>php </p></li><li><p>    header("Content-Type:text/html;charset=utf-8");            //设置头部信息 </p></li><li><p>    //isset()检测变量是否设置 </p></li><li><p>    if(isset($_REQUEST['authcode'])){ </p></li><li><p>        session_start(); </p></li><li><p>        //strtolower()小写函数 </p></li><li><p>        if(strtolower($_REQUEST['authcode'])== $_SESSION['authcode']){ </p></li><li><p>            //跳转页面 </p></li><li><p>            echo "<script language=\"javascript\">"; </p></li><li><p>            echo "document.location=\"./form.php\""; </p></li><li><p>            echo "</script>"; </p></li><li><p>        }else{ </p></li><li><p>            //提示以及跳转页面 </p></li><li><p>            echo "<script language=\"javascript\">"; </p></li><li><p>            echo "alert('输入错误!');"; </p></li><li><p>            echo "document.location=\"./form.php\""; </p></li><li><p>            echo "</script>"; </p></li><li><p>        } </p></li><li><p>        exit(); </p></li><li><p>    }</p></li></ol></pre><p>显示页面如下:</p><p><img src="https://s3.51cto.com/wyfs02/M02/73/7E/wKioL1X_tm-wec1TAAAelw9N7rA303.jpg" alt="php中怎么实现一个验证码功能"></p><p>那么,纯数字的实现了,数字加英文的也应该不难了。要修改的代码   只是在 captcha.php 将 //7>生成随机数字 修改成  //7>生成随机的字母和数字,如果你真的很可爱的就修改这几个字就认为可以实现的话,那么祝贺你,你永远保持快乐。脑残儿童欢乐多。</p><p>废话不多说了,拉代码吧。 </p><pre>php     //10>设置session,必须处于脚本最顶部     session_start();      $image = imagecreatetruecolor(100, 30);        //1>设置验证码图片大小的函数     //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);     $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff     //6>区域填充 int imagefill(int im, int x, int y, int col)  (x,y) 所在的区域着色,col 表示欲涂上的颜色     imagefill($image, 0, 0, $bgcolor);     //10>设置变量     $captcha_code = "";     //7>生成随机的字母和数字     for($i=0;$i<4;$i++){         //设置字体大小         $fontsize = 8;                 //设置字体颜色,随机颜色         $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));            //0-120深颜色         //设置需要随机取的值,去掉容易出错的值如0和o         $data ='abcdefghigkmnpqrstuvwxy3456789';         //取出值,字符串截取方法   strlen获取字符串长度         $fontcontent = substr($data, rand(0,strlen($data)),1);         //10>.=连续定义变量         $captcha_code .= $fontcontent;                 //设置坐标         $x = ($i*100/4)+rand(5,10);         $y = rand(5,10);          imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);     }     //10>存到session     $_SESSION['authcode'] = $captcha_code;     //8>增加干扰元素,设置雪花点     for($i=0;$i<200;$i++){         //设置点的颜色,50-200颜色比数字浅,不干扰阅读         $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));                 //imagesetpixel — 画一个单一像素         imagesetpixel($image, rand(1,99), rand(1,29), $pointcolor);     }     //9>增加干扰元素,设置横线     for($i=0;$i<4;$i++){         //设置线的颜色         $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));         //设置线,两点一线         imageline($image,rand(1,99), rand(1,29),rand(1,99), rand(1,29),$linecolor);     }      //2>设置头部,image/png     header('Content-Type: image/png');     //3>imagepng() 建立png图形函数     imagepng($image);     //4>imagedestroy() 结束图形函数  销毁$image     imagedestroy($image);</pre><p>其他的两个页面,不许要修改。</p><p><img src="https://s9.51cto.com/wyfs02/M01/73/7E/wKioL1X_tm_x2C1AAAAmc7ioFis464.jpg-wh_600x-s_169628322.jpg" alt="php中怎么实现一个验证码功能"></p><p>一般而言,现在就已经够用了。但是就像动漫一样,总会有番外。</p><p>那么,我们来个汉字的番外吧。其实我也准备将汉字的验证码放到我的毕业设计里面,虽然现在很流行滑动验证码,但是本人毕竟不是专门学习js的。</p><p>而且,还可以和答辩的老师说,我们验证码不需要素材,连图片也是生成的,用自己的知识装13,也没有设么的。 </p><pre>php     //11>设置session,必须处于脚本最顶部     session_start();      //1>设置验证码图片大小的函数     $image = imagecreatetruecolor(200, 60);             //5>设置验证码颜色 imagecolorallocate(int im, int red, int green, int blue);     $bgcolor = imagecolorallocate($image,255,255,255); //#ffffff     //6>区域填充 int imagefill(int im, int x, int y, int col)  (x,y) 所在的区域着色,col 表示欲涂上的颜色     imagefill($image, 0, 0, $bgcolor);     //7>设置ttf字体     $fontface = 'FZYTK.TTF';     //7>设置字库,实现简单的数字储备     $str='天地不仁以万物为刍狗圣人不仁以百姓为刍狗这句经常出现在控诉暴君暴政上地残暴不仁把万物都当成低贱的猪狗来看待而那些高高在上的所谓圣人们也没两样还不是把我们老百姓也当成猪狗不如的东西但实在正取的解读是地不情感用事对万物一视同仁圣人不情感用事对百姓一视同仁执子之手与子偕老当男女主人公含情脉脉看着对方说了句执子之手与子偕老女方泪眼朦胧含羞地回一句讨厌啦这样的情节我们是不是见过很多但是我们来看看这句的原句死生契阔与子成说执子之手与子偕老于嗟阔兮不我活兮于嗟洵兮不我信兮意思是说战士之间的约定说要一起死现在和我约定的人都走了我怎么活啊赤裸裸的兄弟江湖战友友谊啊形容好基友的基情比男女之间的爱情要合适很多吧';     //str_split()切割字符串为一个数组,一个中文在utf_8为3个字符     $strdb = str_split($str,3);         //>11     $captcha_code = '';     //8>生成随机的汉子     for($i=0;$i<4;$i++){         //设置字体颜色,随机颜色         $fontcolor = imagecolorallocate($image, rand(0,120),rand(0,120), rand(0,120));            //0-120深颜色         //随机选取中文         $in = rand(0,count($strdb));         $cn = $strdb[$in];         //将中文记录到将保存到session的字符串中         $captcha_code .= $cn;         /*imagettftext (resource $image ,float $size ,float $angle ,int $x ,int $y,int $color,         string $fontfile ,string $text ) 幕布 ,尺寸,角度,坐标,颜色,字体路径,文本字符串         mt_rand()生成更好的随机数,比rand()快四倍*/         imagettftext($image, mt_rand(20,24),mt_rand(-60,60),(40*$i+20),mt_rand(30,35),$fontcolor,$fontface,$cn);     }     //11>存到session     $_SESSION['authcode'] = $captcha_code;     //9>增加干扰元素,设置点     for($i=0;$i<200;$i++){         //设置点的颜色,50-200颜色比数字浅,不干扰阅读         $pointcolor = imagecolorallocate($image,rand(50,200), rand(50,200), rand(50,200));                 //imagesetpixel — 画一个单一像素         imagesetpixel($image, rand(1,199), rand(1,59), $pointcolor);     }     //10>增加干扰元素,设置线     for($i=0;$i<4;$i++){         //设置线的颜色         $linecolor = imagecolorallocate($image,rand(80,220), rand(80,220),rand(80,220));         //设置线,两点一线         imageline($image,rand(1,199), rand(1,59),rand(1,199), rand(1,59),$linecolor);     }      //2>设置头部,image/png     header('Content-Type: image/png');     //3>imagepng() 建立png图形函数     imagepng($image);     //4>imagedestroy() 结束图形函数  销毁$image     imagedestroy($image);</pre><p>其他的页面也是不需要修改的。</p><p>效果图如下:</p><p><img src="/upload/otherpic51/444408.jpg" alt="php中怎么实现一个验证码功能"></p><p>看完上述内容,你们掌握php中怎么实现一个验证码功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!</p> <br> 分享标题:php中怎么实现一个验证码功能 <br> 本文网址:<a href="http://bjjierui.cn/article/gciope.html">http://bjjierui.cn/article/gciope.html</a> </div> </div> <div class="other"> <h3>其他资讯</h3> <ul> <li> <a href="/article/copohc.html">Linux单网卡多IP配置-创新互联</a> </li><li> <a href="/article/copdoo.html">SQLMap入门-创新互联</a> </li><li> <a href="/article/copohj.html">MySql中使用正则表达式查询的方法-创新互联</a> </li><li> <a href="/article/copohi.html">python读入csv文件的方法-创新互联</a> </li><li> <a href="/article/copope.html">Zend_Db_Table如何在ZendFramework中使用-创新互联</a> </li> </ul> </div> </div> <ul class="kf"> <li class="kf1"><span class="tela">建站热线:<a href="tel:13518219792" target="_blank">13518219792</a></span></li> <li class="kf11"><span class="weixin"><img src="/Public/Home/images/weixin.jpg" alt="网站建设微信咨询"><br> 微信扫一扫在线咨询</span> </li> <li class="kf5">QQ客服: <a href="http://wpa.qq.com/msgrd?v=3&uin=631063699&site=qq&menu=yes" class="on2" target="_blank" rel="nofollow"><img src="/Public/Home/images/qq.gif" alt="建站业务咨询" title="建站业务咨询"></a> <a href="http://wpa.qq.com/msgrd?v=3&uin=631063699&site=qq&menu=yes" class="on2" target="_blank" rel="nofollow"><img src="/Public/Home/images/qq.gif" alt="网站设计咨询" title="网站设计咨询"></a></li> <li class="kf2"><a href="http://www.bjjierui.cn/cases/" target="_blank">案 例</a></li> <li class="kf4"><a href="http://www.bjjierui.cn/" target="_blank">价 格</a></li> <li class="kf6" title="返回顶部"></li> </ul> <div class="footer"> <div class="footer_2"> <p>Copyright © 2012-2020 <strong>网创优客信息咨询</strong> 版权所有 蜀ICP备2023009085号-7<br /> 手机:13518219792 QQ:631063699 地址:成都市青羊区锣锅巷31号 邮编:610000 Email:wh@cdxwcx.com<br/> 成都网络公司-网创优客建站品牌专注<a href="http://www.bjjierui.cn/">成都网站建设</a>、<a href="http://www.bjjierui.cn/">成都网站设计</a>服务,为成都公司建设高品质的网站</p> </div> </div> <script type="text/javascript"> $(document).ready(function(){ $(".kf6").click(function() { $('body,html').animate({ scrollTop : 0 }, 500); return false; }); }) var bodyhe=$("body").height(); var winhe=330; var bodyf=bodyhe-winhe; var bodyft=bodyhe-365; window.onscroll = function(){ var t = document.documentElement.scrollTop || document.body.scrollTop; if(t>200){ $(".kf .kf6").stop().animate({opacity:'1'},200); }else{$(".kf .kf6").stop().animate({opacity:'0'},200);} if(t>1 && t<winhe){ $(".header").addClass('no'); $(".header").removeClass('notwo'); }else if(t>winhe){ $(".header").removeClass('no'); $(".header").addClass('notwo'); }else{ $(".header").removeClass('no'); } } </script> </body> </html> <script> $(".con img").each(function(){ var src = $(this).attr("src"); //获取图片地址 var str=new RegExp("http"); var result=str.test(src); if(result==false){ var url = "https://www.cdcxhl.com"+src; //绝对路径 $(this).attr("src",url); } }); window.onload=function(){ document.oncontextmenu=function(){ return false; } } </script>