• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > PHP如何实现获取验证码

PHP如何实现获取验证码

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了PHP生成验证码,PHP获取验证码等相关知识,希望对您有所帮助

php实现获取验证码的方法:【<?php session_start();$image = imagecreatetruecolor(100, 30);imagecolorallocate(int im, int red, int...】。


PHP如何实现获取验证码


在日常生活中我们会经常使用到验证码功能,那么如果我们要自己实现一个验证码功能该如何去做呢?下面我们给出具体的实现代码,供大家参考!

如果你是一名初学者,那么我强烈建议你跟着代码中的注释一步步来,而不是直接复制代码。


新建一个captcha.php:

<?php  //11>设置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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head> <body> <form method="post" action="./form.php">  <p>验证码: <img id="captcha_img" border='1' src='./captcha.php?r=echo rand(); ?>' style="width:100px; height:30px" />    <a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./captcha.php?r='+Math.random()">换一个?</a>  </p>  <P>请输入验证码:<input type="text" name='authcode' value=''/></p>  <p><input type='submit' value='提交' style='padding:6px 5px;'/></p></form> </body></html>

从index.html可以看到,提交的表单是到form.php的,所以还要有一个判断的form.php代码:

<?php  header("Content-Type:text/html;charset=utf-8");      //设置头部信息  //isset()检测变量是否设置  if(isset($_REQUEST['authcode'])){    session_start();    //strtolower()小写函数    if(strtolower($_REQUEST['authcode'])== $_SESSION['authcode']){      //跳转页面      echo "<script language=\"javascript\">";      echo "document.location=\"./form.php\"";      echo "</script>";    }else{      //提示以及跳转页面      echo "<script language=\"javascript\">";      echo "alert('输入错误!');";      echo "document.location=\"./form.php\"";      echo "</script>";    }    exit();  }

显示页面如下:

PHP如何实现获取验证码

数字加英文的验证码,只需更改captcha.php页面中的 7》即可,其他两个页面不需要动,代码如下:

<?php  //11>设置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);

显示页面如下:

PHP如何实现获取验证码

生成汉字类验证码,在运行过程中,提示乱码错误,无法显示,未能解决,代码如下:

<?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);


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PHP如何实现获取验证码

相关文章

  • 2022-04-29设计师应该从四个方面优化网站
  • 2022-04-29PhotoShop打造五彩抽象透明的圆球形图标制作教程
  • 2022-04-29帝国CMS二次开发付款后才能查看内容
  • 2022-04-29一文讲解ajax实现无刷新上传和下载(代码详解)
  • 2022-04-29Illustrator结合PS制作超酷的立体字教程
  • 2022-04-29三种在php程序中嵌入html代码的方法
  • 2022-04-29AI绘制时尚少女插画
  • 2022-04-29解决Laravel在composer install时出现timeout问题
  • 2022-04-29分享Laravel模型使用的2个小技巧
  • 2022-04-29Photoshop设计金属质感的网页按钮

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • vue中h5端打开app(判断是安卓还是苹果)
    • PhotoShop制作漂亮的蓝色发光文字效果教程
    • 介绍Javascript实现定时器倒计时
    • ThinkPHP中if标签和比较标签对于变量的比较
    • PhotoShop制作魔幻霓虹火焰字效果的教程
    • Photoshop制作油漆溢出特效的艺术字教程
    • 如何快速搭建uni-app项目?两种搭建方法分享
    • 两行 Javascript 代码生成 UUID的方法
    • Nodejs+express中间件实现文件上传
    • 一键开启网页夜间模式代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有