当前位置: 首页 > 网络知识

制作简单安全的php验证码类代码实例

时间:2026-01-29 09:39:14

  本站收录这篇文章制作简单安全的php验证码类代码实例,详细解说文章中相关验证码安全技术与知识,欢迎能给大家一些在这方面的支持和帮助!下面是详细内容:
  一,php验证码类,secoderlass.php
  程序代码(For Alixixi)如下:
  <?php
  /**
  *安全验证码
  *
  *安全的验证码要:验证码文字扭曲、旋转,使用不同字体,添加干扰码
  *
  * author流水孟春<cmpan(at)qq>
  * link labs.yulansn/YL_Security_Secoder
  * link wiki.yulansn/docs/yl/security/secoder
  */
  class YL_Security_Secoder
  if(self::$useCurve)
  //绘验证码
  $code=array();//验证码
  $codeNX=0;//验证码第N个字符的左边距
  for($i=0;$i<self::$length;$i++)
  //保存验证码
  isset($_SESSION)session_start();
  $_SESSION[self::$seKey]['code']=join('',$code);//把校验码保存到session
  $_SESSION[self::$seKey]['time']=time();//验证码创建时间
  header('CacheControl:private,maxage=0,nostore,nocache,mustrevalidate');
  header('CacheControl:postcheck=0,precheck=0',false);
  header('Pragma:nocache');
  header("contenttype:image/png");
  //输出图像
  imagepng(self::$_image);
  imagedestroy(self::$_image);
  }
  /**
  *画一条由两条连在一起构成的随机正弦函数曲线作干扰线(你可以改成更帅的曲线函数)
  *
  *高中的数学公式咋都忘了涅,写出来
  *正弦型函数解析式:y=Asin(ωx+φ)+b
  *各常数值对函数图像的影响:
  *A:决定峰值(即纵向拉伸压缩的倍数)
  *b:表示波形在Y轴的位置关系或纵向移动距离(上加下减)
  *φ:决定波形与X轴位置关系或横向移动距离(左加右减)
  *ω:决定周期(最小正周期T=2π/∣ω∣)
  *
  */
  protected static function _writeCurve()
  }
  }
  $A=mt_rand(1,self::$imageH/2);//振幅
  $f=mt_rand(self::$imageH/4,self::$imageH/4);//X轴方向偏移量
  $T=mt_rand(self::$imageH*1.5,self::$imageL*2);//周期
  $w=(2*M_PI)/$T;
  $b=$py$A*sin($w*$px+$f)self::$imageH/2;
  $px1=$px2;
  $px2=self::$imageL;
  for($px=$px1;$px<=$px2;$px=$px+0.9)
  }
  }
  }
  /**
  *画杂点
  *往图片上写不同颜色的字母或数字
  */
  protected static function _writeNoise()
  }
  }
  /**
  *验证验证码是否正确
  *
  * param string$code用户验证码
  * param bool用户验证码是否正确
  */
  public static function check($code)
  //session过期
  if(time()$_SESSION[self::$seKey]['time']>self::$expire)
  //if($code==$_SESSION[self::$seKey]['code'])
  //echo$_SESSION[self::$seKey]['code'].'4';
  return false;
  }
  }
  //useage
  /*
  YL_Security_Secoder::$useNoise=false;//要更安全的话改成true
  YL_Security_Secoder::$useCurve=true;
  YL_Security_Secoder::entry();
  */
  /*
  //验证验证码
  if(!YL_Security_Secoder::check( $_POST['secode']))
  */
  二,调用方法
  1,显示验证码页面code.php
  程序代码(For Alixixi)如下:
  <?php
  session_start();
  require'secoderlass.php';//先把类包含进来,实际路径根据实际情况进行修改。
  $vcode=new YL_Security_Secoder();//实例化一个对象
  $vcode>entry();
  ?>
  2,检查验证码是否正确
  程序代码(For Alixixi)如下:
  <?php
  session_start();
  require'secoderlass.php';//先把类包含进来,实际路径根据实际情况进行修改。
  $vcode=new YL_Security_Secoder();//实例化一个对象
  //$vcode>entry();
  $code=$_GET['code'];
  echo$vcode>check($code);
  //$_SESSION['code']=$vc>getCode();//验证码保存到SESSION中
  ?>
  3,验证码输入框调用页面
  程序代码(For Alixixi)如下:
  <img id="messageImg"src='images/tishis2.gif'width='16'height='16'>单击图片重新获取验证码<br>
  <a href="#"><img src="code.php"onclick="javascript:this.src='code.php?tm='+Math.rand();"/>



上一篇:ASP中使用stream读取文件内容的实例代码
下一篇:想不显示织梦栏目列表页缩略图就是不显示默认缩略图怎么办
php验证码
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素