首页 >后端开发 >php教程 > 正文

PHP实现登录验证码功能及调用方法

原创2018-06-02 10:37:160627
这篇文章主要介绍了PHP实现登录验证码功能,文末附调用方法,并包含随机字符函数,和GD库画图函数,感兴趣的小伙伴们可以参考一下

ShowKey.php

<?php
session_start();
//设置COOKIE或Session
function esetcookie($name,$str,$life=0){
//本函数将字符串 str 全部变小写字符串使验证码输入不区分大小写----在提交表单进行session比较同样需要次函数转化
 $_SESSION[$name]=strtolower($str);
}

//获取随机字符 此函数区分字符大小写 如果不区分大小写可加入函数strtolower
function domake_password($len) 
{ 
  $chars = array( 
    /*"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", 
    "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", 
    "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", 
    "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", 
    "S", "T", "U", "V", "W", "X", "Y", "Z",*/ "0", "1", "2", 
    "3", "4", "5", "6", "7", "8", "9" 
  ); 
  $charsLen = count($chars) - 1; 
  shuffle($chars);// 将数组打乱
  $output = ""; 
  for ($i=0; $i<$len; $i++) 
  { 
    $output .= $chars[mt_rand(0, $charsLen)]; //获得一个数组元素
  } 
  return $output;
} 

//显示验证码
function ShowKey(){
 $key=domake_password(4);//获取随机值
 $set=esetcookie("checkkey",$key);//将随机值写入cookie或session
 //是否支持gd库
 if(function_exists("imagejpeg")) 
 {
  header ("Content-type: image/jpeg");
  $img=imagecreate(47,20);
  $blue=imagecolorallocate($img,102,102,102);
  $white=ImageColorAllocate($img,255,255,255);
  $black=ImageColorAllocate($img,71,71,71);
  imagefill($img,0,0,$blue);
  imagestring($img,5,6,3,$key,$white);
  for($i=0;$i<90;$i++) //加入干扰象素
  {
   imagesetpixel($img,rand()%70,rand()%30,$black);
  }
  imagejpeg($img);
  imagedestroy($img);
 }
 elseif (function_exists("imagepng"))
 {
  header ("Content-type: image/png");
  $img=imagecreate(47,20);
  $blue=imagecolorallocate($img,102,102,102);
  $white=ImageColorAllocate($img,255,255,255);
  $black=ImageColorAllocate($img,71,71,71);
  imagefill($img,0,0,$blue);
  imagestring($img,5,6,3,$key,$white);
  for($i=0;$i<90;$i++) //加入干扰象素
  {
   imagesetpixel($img,rand()%70,rand()%30,$black);
  }
  imagepng($img);
  imagedestroy($img);
 }
 elseif (function_exists("imagegif")) 
 {
  header("Content-type: image/gif");
  $img=imagecreate(47,20);
  $blue=imagecolorallocate($img,102,102,102);
  $white=ImageColorAllocate($img,255,255,255);
  $black=ImageColorAllocate($img,71,71,71);
  imagefill($img,0,0,$blue);
  imagestring($img,5,6,3,$key,$white);
  for($i=0;$i<90;$i++) //加入干扰象素
  {
   imagesetpixel($img,rand()%70,rand()%30,$black);
  }
  imagegif($img);
  imagedestroy($img);
 }
 elseif (function_exists("imagewbmp")) 
 {
  header ("Content-type: image/vnd.wap.wbmp");
  $img=imagecreate(47,20);
  $blue=imagecolorallocate($img,102,102,102);
  $white=ImageColorAllocate($img,255,255,255);
  $black=ImageColorAllocate($img,71,71,71);
  imagefill($img,0,0,$blue);
  imagestring($img,5,6,3,$key,$white);
  for($i=0;$i<90;$i++) //加入干扰象素
  {
   imagesetpixel($img,rand()%70,rand()%30,$black);
  }
  imagewbmp($img);
  imagedestroy($img);
 }
 else
 {
  //不支持验证码
  header("content-type:image/jpeg\r\n");
  header("Pragma:no-cache\r\n");
  header("Cache-Control:no-cache\r\n");
  header("Expires:0\r\n");
  $fp = fopen("data/vdcode.jpg","r"); 
 }
}
ShowKey();
?>

调用方法:

代码如下:

<img src="ShowKey.php" name="KeyImg" id="KeyImg"  onClick="KeyImg.src='ShowKey.php?'+Math.random()">

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

PHP7基于curl实现的上传图片功能

PHP中的数据传输CURL实例分析

PHP5.0~5.6 各版本兼容性cURL文件上传功能

以上就是PHP实现登录验证码功能及调用方法的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

  • 相关标签:php 调用 能及
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 专题推荐

    推荐视频教程
  • javascript初级视频教程javascript初级视频教程
  • jquery 基础视频教程jquery 基础视频教程
  • 视频教程分类