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

PHP如何实现获取验证码

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了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 ='abcdefghigkmnpqrstuvwx
  


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

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

  • PHP如何实现获取验证码

相关文章

  • 织梦DEDECMS扩展插件来防止注册机注册会员和投稿
  • 如何让Emlog支持UBB代码?
  • Photoshop制作超酷的哥特字体教程
  • ThinkPHP框架SQL操作链式写法原理
  • PhotoShop CS6制作逼真动物皮毛立体文字特效教程
  • Illustrator绘制水晶质感苹果标志
  • 微信小程序自定义tabbar组件
  • 织梦DedeCMS后台添加一键推送百度站长、MIP、熊掌号功能
  • 详解Node.js Buffer的使用
  • Flex中对表格中某列的值进行数字格式化保留两位小数

文章分类

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

最近更新的内容

    • 利用画笔及描边路径制作漂亮的金色树叶字
    • 详细介绍mysql忘记密码的解决方案及修改密码的三种方式
    • Photoshop制作血迹喷溅效果的艺术字
    • PHP使用PHPAnalysis提取关键字中文分词的方法是什么
    • 2018最新手机号验证正则表达式方法
    • PHP怎么替换图片链接
    • 3大技巧秒杀百度的首页排名
    • CSS实现领积分动画效果
    • 浅析uni-app中设置导航栏和修改默认端口的方法
    • 关于 Laravel ORM 对 Model::find 方法进行缓存

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

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