资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

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> 当前URL:<a href="http://www.cdkjz.cn/article/gciope.html">http://www.cdkjz.cn/article/gciope.html</a> </div> <div class="g-return-wrapper clearfix"> <a href="http://www.cdkjz.cn/" class="home">返回首页</a> <a href="http://www.cdkjz.cn/news/" class="column">了解更多建站资讯</a> </div> </div> </div> <div class="full-related-news"> <h3 class="related-title">相关资讯</h3> <div class="related-news weblg"> <ul class="clearfix"> <li> <a href="/article/dessop.html"> <h2 class="title">python函数与方法有哪些区别-创新互联</h2> </a> </li><li> <a href="/article/dessdc.html"> <h2 class="title">如何在Ubuntu18.04中对Python库进行升级-创新互联</h2> </a> </li><li> <a href="/article/dessog.html"> <h2 class="title">keras中如何使用backend.clip-创新互联</h2> </a> </li><li> <a href="/article/dessdp.html"> <h2 class="title">php爬虫框架怎么用-创新互联</h2> </a> </li><li> <a href="/article/desscs.html"> <h2 class="title">使用socket.io怎么编写一个WEB聊天室-创新互联</h2> </a> </li><li> <a href="/article/dessos.html"> <h2 class="title">基于Python实现的五子棋游戏设计(alpha-beta剪枝技术)-创新互联</h2> </a> </li><li> <a href="/article/desssg.html"> <h2 class="title">APP专项---内存泄漏-创新互联</h2> </a> </li><li> <a href="/article/dessch.html"> <h2 class="title">redis主从复制创建步骤分享-创新互联</h2> </a> </li> </ul> </div> </div> <div class="full-icontact-cover m-ft-contact"> <div class="weblg"> <div class="clearfix content"> <div class="motto"> 多年建站经验 </div> <div class="info"> <h3>多一份参考,总有益处</h3> <h2> 联系快上网,免费获得专属《策划方案》及报价</h2> <div class="msg"> <p>咨询相关问题或预约面谈,可以通过以下方式与我们联系</p> <h4> 大客户专线   成都:<a href="tel:+13518219792" rel="nofollow">13518219792</a>   座机:<a href="tel:02886922220" rel="nofollow">028-86922220</a> </h4> </div> </div> </div> <div class="btns clearfix"> <a href="https://wpa.qq.com/msgrd?v=3&uin=631063699&site=qq&menu=yes" target="_blank" rel="nofollow" class="oline">在线咨询</a> <a href="javascript:;" class="edit" rel="nofollow">提交需求</a> </div> </div> </div> <div class="footer-content"> <div class="weblg clearfix"> <div class="friend-links"> <h6 class="clearfix"> <span class="tilte">友情链接</span> <a class="exchagne" href="http://wpa.qq.com/msgrd?v=3&uin=631063699&site=qq&menu=yes">交换友情链接</a> </h6> <div class="link-list clearfix"> <div class="link-slider"> <a href="http://www.sffdjwx.cn/" title="什邡沃尔沃发电机出租" target="_blank">什邡沃尔沃发电机出租</a><a href="http://www.cdhuace.com/logo.html" title="LOGO设计" target="_blank">LOGO设计</a><a href="http://www.cdhuace.com/faguangzi/bfg.html" title="背发光字" target="_blank">背发光字</a><a href="http://www.scqszs.cn/" title="四川黔盛装饰" target="_blank">四川黔盛装饰</a><a href="http://www.ncjierui.cn/" title="彭山网站制作" target="_blank">彭山网站制作</a><a href="http://www.cdhuace.com/faguangzi/minifgz.html" title="迷你发光字" target="_blank">迷你发光字</a><a href="https://www.cdcxhl.com/tuoguan/yidong/" title="成都移动服务器托管" target="_blank">成都移动服务器托管</a><a href="http://m.cdcxhl.cn/mobile/ " title="手机网站设计" target="_blank">手机网站设计</a><a href="https://www.cdcxhl.com/mobile.html" title="手机网站" target="_blank">手机网站</a><a href="http://www.xhgfhy.com/ " title="郫县门窗定制" target="_blank">郫县门窗定制</a> </div> </div> </div> </div> <div class="full-foot-bottom"> <div class="weblg clearfix"> <p>成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询<a href="tel:028-86922220">028-86922220</a></p> <p> 成都快上网科技有限公司-四川网站建设设计公司 | <a href="http://www.miitbeian.gov.cn/" target="_blank" rel="nofollow">蜀ICP备19037934号</a> Copyright 2020,ALL Rights Reserved cdkjz.cn | <a href="http://www.cdkjz.cn/" target="_blank">成都网站建设</a> | © Copyright 2020版权所有.</p> <p>专家团队为您提供<a href="http://www.cdkjz.cn/" target="_blank">成都网站建设</a>,<a href="http://www.cdkjz.cn/" target="_blank">成都网站设计</a>,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | <a href="###">网站建设地图</a></p> </div> </div> </div> <script type="text/javascript" src="../js/idangerous.swiper.min.js"></script> <script type="text/javascript" src="../js/wow.min.js"></script> <script type="text/javascript" src="../js/jquery.mousewheel.min.js"></script> <script type="text/javascript" src="../js/jquery.placeholder.min.js"></script> <script type="text/javascript" src="../js/layout.js"></script> </body> </html> <script> $(".singlepage 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>