成都网站建设设计

将想法与焦点和您一起共享

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://chengdu.cdxwcx.cn/article/gciope.html">http://chengdu.cdxwcx.cn/article/gciope.html</a> </div> </div> </div> <!--左边end--> <!--右边begin--> <div class="news_r"> <div class="news_t"><h2 class="h2">其他资讯</h2></div> <div class="news_ul3"> <ul> <li> <a href="/article/hgdjhh.html"> <h3 class="h3">mysql索引怎么写 mysql索引的用法</h3> </a> </li><li> <a href="/article/hgdpsg.html"> <h3 class="h3">php如何清除数据库缓存 如何清理mysql数据库缓存</h3> </a> </li><li> <a href="/article/hgdjpg.html"> <h3 class="h3">c语言函数输出指定字符 c语言输入字符函数</h3> </a> </li><li> <a href="/article/hgdpch.html"> <h3 class="h3">python的递增函数 递增函数递减函数</h3> </a> </li><li> <a href="/article/hgdpog.html"> <h3 class="h3">windows下安卓系统的简单介绍</h3> </a> </li> </ul> </div> </div> <!--右边end--> <div class="c_l"></div> </div> </div> <!--正文end--> <!--尾部begin--> <!--尾部begin--> <footer> <div class="f_bg"> <div class="wrap"> <div class="links"> <h2 class="h2">甜橘子解决方案<a href="/solution/" title="更多" class="more">更多+</a></h2> <ul> <li><a href="/solution/xiaochengxu.html" title="小程序定制解决方案">小程序定制解决方案</a></li> <li><a href="/solution/qiyewz.html" title="企业网站建设解决方案">企业网站建设解决方案</a></li> <li><a href="/solution/menhuwz.html" title="行业门户网站建设解决方案">行业门户网站建设解决方案</a></li> <li><a href="/solution/yingxiaowz.html" title="营销型网站建设解决方案">营销型网站建设解决方案</a></li> <li><a href="/solution/waimaowz.html" title="外贸网站建设解决方案">外贸网站建设解决方案</a></li> <li><a href="/solution/pingpaiwz.html" title="品牌形象网站建设解决方案">品牌形象网站建设解决方案</a></li> <li><a href="/solution/dianziwz.html" title="数码、电子产品网站建设解决方案">数码、电子产品网站建设解决方案</a></li> <li><a href="/solution/jituanwz.html" title="集团、上市企业网站建设解决方案">集团、上市企业网站建设解决方案</a></li> <li><a href="/solution/dichanwz.html" title="房地产、地产项目网站建设解决方案">房地产、地产项目网站建设解决方案</a></li> <li><a href="/solution/zhubaowz.html" title="珠宝高端奢侈品网站建设解决方案">珠宝高端奢侈品网站建设解决方案</a></li> </ul> </div> <div class="links w2"> <h2 class="h2">我们的实力<a href="/about/" title="更多" class="more">更多+</a></h2> <ul> <li>10年专业互联网服务经验</li> <li>成都高端建站设计团队</li> <li>资深行业分析策划</li> <li>B2C营销型网站建设者</li> <li>前沿视觉设计、研发能力</li> <li>前端代码深度符合SEO优化</li> <li>成都市高新技术企业证书</li> <li>具有完备的项目管理</li> <li>完善的售后服务体系</li> <li>深厚的网络运营经验</li> <li>时刻新技术研发能力</li> <li>16个网站系统软件著作权</li> </ul> </div> <div class="f_div2_r"> <h2 class="h2">关于甜橘子<a href="/about/" title="更多" class="more">更多+</a></h2> 甜橘子网站设计,为客户量身定制各类网站建设业务,包括企业型、电子商务型、行业门户型、品牌建立型等各类网站,实战经验丰富,成功案例众多。以客户利益为出发点,甜橘子网站制作为客户规划、定制符合企业需求、带有营销价值的建站方案,提供从网站前期定位分析策划到网站界面设计... </div> <div class="c_l"></div> </div> <div class="wrap"> <div class="f_div3"> <span class="l">成都网站制作案例©2020 甜橘子设计 版权所有 | <a href="http://chengdu.cdxwcx.cn" target="_blank">甜橘子网站设计</a><a href="http://chengdu.cdxwcx.cn" target="_blank">chengdu.cdxwcx.cn</a></span> <span class="r"><a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">蜀ICP备11025516号</a></span> </div> </div> </div> </footer> <!--尾部end--> <script language="javascript" src="/Public/Home/js/foot.js"></script> <!--尾部end--> <!--侧边栏begin--> <div class="side"> <ul> <li id="qqonline_xbceo"><a href="tencent://message/?uin=631063699&Site=&Menu=yes"><i class="bgs1"></i>QQ咨询</a></li> <li class="shangqiao"><a href="tencent://message/?uin=532337155&Site=&Menu=yes" title="在线咨询"> <div><i class="bgs2"></i>在线咨询</div> </a></li> <li class="sideewm"><i class="bgs3"></i>官方微信 <div class="ewBox"></div> </li> <li class="sideetel"><i class="bgs4"></i>联系电话 <div class="telBox"> <dd class="bgs1"><span>座机</span><a href="tel:028-86922220" target="_blank">028-86922220</a></dd> <dd class="bgs2"><span>手机</span><a href="tel:13518219792" target="_blank">13518219792</a></dd> </div> </li> <li class="sidetop" onClick="goTop()" id="sidetop"><i class="bgs6"></i>返回顶部</li> </ul> </div> <script type="text/javascript"> $('.sideewm').hover(function(){ $('.ewBox').stop().fadeIn(); },function(){ $('.ewBox').stop().fadeOut(); }); $('.sideetel').hover(function(){ $('.telBox').stop().fadeIn(); },function(){ $('.telBox').stop().fadeOut(); }); $(".con_id 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); } }); </script> <!-- WPA start --> <!-- WPA end --> <!--侧边栏end--> </body> </html>