当前位置: 首页 > 科技观察

php实现验证码的方法

时间:2023-03-11 23:41:10 科技观察

表单实现的验证码越来越多,但是用js写的验证码总觉得不方便,于是学习了php实现的验证码。表单实现的验证码越来越多,但是用js写的验证码总是不方便,于是学习了用php实现的验证码。嗯,其实没什么可做的,但是不想浪费时间,所以学习了php来实现验证码。俗话说,本事多不压身。而且,还可以封装成一个函数,方便以后使用,当然现在不封装了。下面说说简单的纯数字验证码。    如果你是新手,建议跟着我代码的注释//号一步一步来。最简单的方法是复制整个代码。    新建一个captcha.php:php//10>设置session,必须在脚本session_start()的最前面;$image=imagecreatetruecolor(100,30);//1>设置验证码图片大小的函数//5>设置验证码颜色imagecolorallocate(intim,intred,intgreen,intblue);$bgcolor=imagecolorallocate($image,255,255,255);//#ffffff//6>areafillintimagefill(intim,intx,inty,intcol)(x,y)所在的区域上色,col代表要涂的颜色imagefill($image,0,0,$bgcolor);//10>Setvariable$captcha_code="";//7>Generaterandomnumbersfor($i=0;$i<4;$i++){//Setfontsize$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>添加干扰元素,设置雪花点为($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>添加干扰元素,设置横线为($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>设置header,image/pngheader('Content-Type:image/png');//3>imagepng()建立png图形函数imagepng($image);//4>imagedestroy()结束图形函数并销毁$imageimagedestroy($image);  然后是静态页面的代码:index.htmldoctypehtml>确认验证码title>head><body><formmethod="post"action="./form.php"><p>验证码:<imgid="captcha_img"border='1'src='./captcha.php?r=echorand();?>'style="width:100px;height:30px"/><ahref="javascript:void(0)"onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">改变?一个>一个><P>请输入验证码:<inputtype="text"name='authcode'value=''/>p><p><inputtype='submit'value='submit'style='padding:6px5px;'/>p>body>html>  从index.html可以看出,提交的表单是到form.php的,所以form.php也有一个判断代码:phpheader("Content-Type:text/html;charset=utf-8");//设置头信息//isset()检测变量是否设置if(isset($_REQUEST['authcode'])){session_start();//strtolower()lowercaseFunctionif(strtolower($_REQUEST['authcode'])==$_SESSION['authcode']){//跳转页面echo"";}else{//提示并跳转页面echo"";}exit();}  展示页面如下:  然后,实现ofpurenumbers给英文加数字应该不难。需要修改的代码只是将captcha.php中的//7>生成随机数改为//7>生成随机字母和数字。如果你真的很可爱,修改一下如果这几个字也算是可以实现的话,那么恭喜你,你会一直幸福下去的。脑残儿童玩得很开心。  废话不多说,我们来拉取代码。 php//10>设置session,必须在脚本最前面session_start();$image=imagecreatetruecolor(100,30);//1>设置验证码图片大小的函数//5>设置验证码颜色imagecolorallocate(intim,intred,intgreen,intblue);$bgcolor=imagecolorallocate($image,255,255,255);//#ffffff//6>区域填充intimagefill(intim,intx,inty,intcol)(x,y)coloring,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>.=连续定义variable$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>加入干扰元素,设置雪花点为($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>添加干扰元素,设置横线为($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/pngheader('Content-Type:image/png');//3>imagepng()建立png图形函数imagepng($image);//4>imagedestroy()结束图形函数destroy$imageimagedestroy($image);  其他两个页面不允许修改    总的来说,现在已经够用了。但就像动漫一样,总会有支线故事。  那么,来一出汉字插曲吧。其实我也打算把汉字的验证码放在我的毕业设计中。虽然现在很流行滑动验证码,但是我毕竟不是专门学js的。  另外,你也可以告诉答题老师,我们的验证码不需要素材,连图片都是生成的,不需要用自己的知识去安装13。 php//11>设置session,必须在脚本的最前面session_start();//1>设置验证码图片大小的函数$image=imagecreatetruecolor(200,60);//5>设置验证码颜色imagecolorallocate(intim,intred,intgreen,intblue);$bgcolor=imagecolorallocate($image,255,255,255);//#ffffff//6>区域填充intimagefill(intim,intx,inty,intcol)(x,y)coloring,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>Generaterandommanfor($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)curtain,size,angle,coordinates,color,fontpath,textstringmt_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>添加干扰元素,setpointfor($i=0;$i<200;$i++){//设置点的颜色,50-200颜色比number,不干扰读取$pointcolor=imagecolorallocate($image,rand(50,200),rand(50,200),rand(50,200));//imagesetpixel—绘制单个像素imagesetpixel($image,rand(1,199),rand(1,59),$pointcolor);}//10>添加干扰元素,设置线条为($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/pngheader('Content-Type:image/png');//3>imagepng()建立png图形函数imagepng($image);//4>imagedestroy()结束图形函数销毁$imageimagedestroy($image);?其他页面无需修改  效果图如下:</p> </div> </div> <div class="zuowen_sxy"> <div class="prev">上一篇:<a title="Windows10今年最大的更新!Windows102004正式版详细体验" href="/kejiguancha/58849.html">Windows10今年最大的更新!Windows102004正式版详细体验</a> </div> <div class="prev">下一篇:<a title="Kobalos:专门攻击超级计算机的Linux恶意软件" href="/kejiguancha/58851.html">Kobalos:专门攻击超级计算机的Linux恶意软件</a> </div> </div> <div class="related_about"> <div class="related_about_t"><code>php实现验证码的方法相关文章</code></div> <ul> <li><a href="/kejifunen/368312.html" target="_blank" title="点票小程序验证功能来了!区块链电子发票真假你都能辨别真假">点票小程序验证功能来了!区块链电子发票真假你都能辨别真假</a></li> <li><a href="/kejifunen/368109.html" target="_blank" title="Apple Watch 3 表现出色,苹果营收实现巨幅增长">Apple Watch 3 表现出色,苹果营收实现巨幅增长</a></li> <li><a href="/kejifunen/368019.html" target="_blank" title="2018年家电行业混合所有制改革首例,康佳如何实现两大目标?">2018年家电行业混合所有制改革首例,康佳如何实现两大目标?</a></li> <li><a href="/kejifunen/368011.html" target="_blank" title="《经济学人》:可穿戴设备如何解决身份验证问题">《经济学人》:可穿戴设备如何解决身份验证问题</a></li> <li><a href="/kejifunen/367798.html" target="_blank" title="用友云服务治理平台帮助企业实现微服务架构">用友云服务治理平台帮助企业实现微服务架构</a></li> <li><a href="/kejifunen/367622.html" target="_blank" title="索诺斯一号评测!所有智能音箱都忽略的一件事是,它实现了">索诺斯一号评测!所有智能音箱都忽略的一件事是,它实现了</a></li> <li><a href="/kejifunen/367505.html" target="_blank" title="可穿戴设备将成为中国智能产业实现“跨越式”发展的契机">可穿戴设备将成为中国智能产业实现“跨越式”发展的契机</a></li> <li><a href="/kejifunen/367239.html" target="_blank" title="芯片如何帮助手机充电器实现“更小体积、更快充电”?">芯片如何帮助手机充电器实现“更小体积、更快充电”?</a></li> <li><a href="/kejifunen/367179.html" target="_blank" title="未来5年 AR-VR头盔将实现六成复合增长率">未来5年 AR-VR头盔将实现六成复合增长率</a></li> <li><a href="/kejifunen/367124.html" target="_blank" title="人力资源社会保障部推出减证便民新举措旷视科技在线身份验证服务">人力资源社会保障部推出减证便民新举措旷视科技在线身份验证服务</a></li> <li><a href="/kejifunen/367023.html" target="_blank" title="格力电器上半年净利润超128亿元,自主研发空调芯片技术实现长">格力电器上半年净利润超128亿元,自主研发空调芯片技术实现长</a></li> <li><a href="/kejifunen/367019.html" target="_blank" title="联想Tech World 2018将推出智能体脂秤,实现SI">联想Tech World 2018将推出智能体脂秤,实现SI</a></li> <li><a href="/kejifunen/366616.html" target="_blank" title="SAKURA以黑科技为引擎,实现创新“加速”">SAKURA以黑科技为引擎,实现创新“加速”</a></li> <li><a href="/kejifunen/366407.html" target="_blank" title="浅谈可穿戴设备在保险行业的应用!实现产品数据">浅谈可穿戴设备在保险行业的应用!实现产品数据</a></li> <li><a href="/kejifunen/366080.html" target="_blank" title="神州云动:CRM帮助制造业实现千店精准管理">神州云动:CRM帮助制造业实现千店精准管理</a></li> <li><a href="/kejifunen/365933.html" target="_blank" title="精神控制真的要实现了吗? BrainCo成为上海人工智能展网">精神控制真的要实现了吗? BrainCo成为上海人工智能展网</a></li> <li><a href="/kejifunen/365772.html" target="_blank" title="智能手环会泄露银行密码吗?实验证明存在漏洞">智能手环会泄露银行密码吗?实验证明存在漏洞</a></li> <li><a href="/kejifunen/365655.html" target="_blank" title="国外高手改装HTC Vive手柄!实现手势控制">国外高手改装HTC Vive手柄!实现手势控制</a></li> <li><a href="/kejifunen/365653.html" target="_blank" title="犀牛云网络胜出!稳步提升排名,帮助企业实现全网营销">犀牛云网络胜出!稳步提升排名,帮助企业实现全网营销</a></li> <li><a href="/kejifunen/365512.html" target="_blank" title="春雨医生“吃螃蟹”!连接可穿戴设备实现远程会诊">春雨医生“吃螃蟹”!连接可穿戴设备实现远程会诊</a></li> </ul> </div> </div> <div class="main-right"> <div class="right_fix"> <div class="r_con"> <div class="r_title">最新推荐</div> <ul> <li><em>1</em><a href="/kejifunen/371234.html" title="三星 Gear VR 将实现手部追踪 " target="_blank">三星 Gear VR 将实现手部追踪 </a></li> <li><em>2</em><a href="/kejifunen/371206.html" title="小米众筹推出HiPee智能健康精灵设备,实现14项检测" target="_blank">小米众筹推出HiPee智能健康精灵设备,实现14项检测</a></li> <li><em>3</em><a href="/kejifunen/371151.html" title="智能手表黑科技!可实现手势控制" target="_blank">智能手表黑科技!可实现手势控制</a></li> <li><em>4</em><a href="/kejifunen/371037.html" title="方太2018年度新闻发布会隆重召开,实现产品与文化共振发展" target="_blank">方太2018年度新闻发布会隆重召开,实现产品与文化共振发展</a></li> <li><em>5</em><a href="/kejifunen/370764.html" title="可穿戴设备如何让职业运动员实现比赛与健康双赢? " target="_blank">可穿戴设备如何让职业运动员实现比赛与健康双赢? </a></li> <li><em>6</em><a href="/kejifunen/370736.html" title="微软、谷歌和苹果都是同质的!技术会实现大统一吗? " target="_blank">微软、谷歌和苹果都是同质的!技术会实现大统一吗? </a></li> <li><em>7</em><a href="/kejifunen/370593.html" title="浅析VR现状!概念很受欢迎,但内容很难实现" target="_blank">浅析VR现状!概念很受欢迎,但内容很难实现</a></li> <li><em>8</em><a href="/kejifunen/370498.html" title="详细讲解语音控制智能家居系统的实现流程和技术" target="_blank">详细讲解语音控制智能家居系统的实现流程和技术</a></li> <li><em>9</em><a href="/kejifunen/370464.html" title="曲面电视的增长正在下降,如何实现逆袭" target="_blank">曲面电视的增长正在下降,如何实现逆袭</a></li> <li><em>10</em><a href="/kejifunen/370430.html" title="这么多厂商做手势识别,uSens如何实现产品差异化" target="_blank">这么多厂商做手势识别,uSens如何实现产品差异化</a></li> </ul> </div> <div class="r_con"> <div class="r_title">猜你喜欢</div> <ul class="you_like"> <li><em>1</em><a href="/kejifunen/370233.html" title="榨汁机实现品质和奢华,了解如何一步步选择榨汁机? " target="_blank">榨汁机实现品质和奢华,了解如何一步步选择榨汁机? </a></li> <li><em>2</em><a href="/kejifunen/370192.html" title="可穿戴健身追踪器假日销售量实现飞跃" target="_blank">可穿戴健身追踪器假日销售量实现飞跃</a></li> <li><em>3</em><a href="/kejifunen/370097.html" title="丰田黑科技实现盲人驾驶梦想" target="_blank">丰田黑科技实现盲人驾驶梦想</a></li> <li><em>4</em><a href="/kejifunen/370013.html" title="VAVA宠物机器人来了,实现远程互动、自动喂食" target="_blank">VAVA宠物机器人来了,实现远程互动、自动喂食</a></li> <li><em>5</em><a href="/kejifunen/369850.html" title="搜狗文档翻译实现重要升级,支持日韩文档免费即时翻译" target="_blank">搜狗文档翻译实现重要升级,支持日韩文档免费即时翻译</a></li> <li><em>6</em><a href="/kejifunen/369824.html" title="以色列大学为智能手表开发了新软件,可以验证签名的真实性" target="_blank">以色列大学为智能手表开发了新软件,可以验证签名的真实性</a></li> <li><em>7</em><a href="/kejifunen/369752.html" title="O2O进入“下半场”,百度会利用AI实现弯道超车吗? " target="_blank">O2O进入“下半场”,百度会利用AI实现弯道超车吗? </a></li> <li><em>8</em><a href="/kejifunen/369750.html" title="融云小程序解决方案!业内率先实现商业落地" target="_blank">融云小程序解决方案!业内率先实现商业落地</a></li> <li><em>9</em><a href="/kejifunen/369647.html" title="极客智能家居!人口变化和现实环境需求将加速智能交通的实现" target="_blank">极客智能家居!人口变化和现实环境需求将加速智能交通的实现</a></li> <li><em>10</em><a href="/kejifunen/369609.html" title="要实现智能监控,首先要做好大数据存储" target="_blank">要实现智能监控,首先要做好大数据存储</a></li> <li><em>11</em><a href="/kejifunen/369394.html" title="长江商学院!从制造到智造,如何实现技术与商业结合?" target="_blank">长江商学院!从制造到智造,如何实现技术与商业结合?</a></li> <li><em>12</em><a href="/kejifunen/369126.html" title="设计和生产可穿戴设备不是你想想就能实现的" target="_blank">设计和生产可穿戴设备不是你想想就能实现的</a></li> <li><em>13</em><a href="/kejifunen/369074.html" title="董明珠!格力空调将使用自家芯片,希望实现员工持股" target="_blank">董明珠!格力空调将使用自家芯片,希望实现员工持股</a></li> <li><em>14</em><a href="/kejifunen/368997.html" title="后Fitbit时代,中国可穿戴企业上市梦何时实现? " target="_blank">后Fitbit时代,中国可穿戴企业上市梦何时实现? </a></li> <li><em>15</em><a href="/kejifunen/368832.html" title="让运维更智慧 以AI方式实现业务智能化运维" target="_blank">让运维更智慧 以AI方式实现业务智能化运维</a></li> <li><em>16</em><a href="/kejifunen/368564.html" title="观看 TA 的心跳 微软利用 HoloLens 实现远程生理" target="_blank">观看 TA 的心跳 微软利用 HoloLens 实现远程生理</a></li> <li><em>17</em><a href="/kejifunen/368449.html" title="VR能否帮助HTC实现逆袭? " target="_blank">VR能否帮助HTC实现逆袭? </a></li> <li><em>18</em><a href="/kejifunen/368428.html" title="无人机农业距离实现成果还有多远?极飞推出植保机-培训-金融等" target="_blank">无人机农业距离实现成果还有多远?极飞推出植保机-培训-金融等</a></li> <li><em>19</em><a href="/kejifunen/368406.html" title="450万的目标如何实现?看TCL洗冰机的“三大战役”" target="_blank">450万的目标如何实现?看TCL洗冰机的“三大战役”</a></li> <li><em>20</em><a href="/kejifunen/368358.html" title="虚拟现实版的互联网可能永远无法实现" target="_blank">虚拟现实版的互联网可能永远无法实现</a></li> </ul> </div> </div> </div> </div> <div class="related_article"></div> <div class="footer"> <p>Copyright © 2012-2022 程序源 版权所有<a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">豫ICP备2022028201号</a></p> <p>重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。 如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。</p> </div> <!-- 应用插件标签 start --> <!-- 应用插件标签 end --> </body> </html>