PHP编写登录验证码功能 附调用方法


Posted in PHP onMay 19, 2016

本文实例为大家分享了一个PHP写的登录验证码功能,供大家参考,具体内容如下

 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()"> 

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

PHP 相关文章推荐
PHP读取目录下所有文件的代码
Jan 07 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
php中cookie的使用方法
Mar 29 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
typecho插件编写教程(四):插件挂载
May 28 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
phpstudy默认不支持64位php的解决方法
Feb 20 PHP
php实现简单的权限管理的示例代码
Aug 25 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
一段实用的php验证码函数
May 19 #PHP
thinkphp3.x中cookie方法的用法分析
May 19 #PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 #PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 #PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 #PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 #PHP
php处理json格式数据经典案例总结
May 19 #PHP
You might like
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
PHP实现ftp上传文件示例
2014/08/21 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
JS字符串常用操作方法实例小结
2019/06/24 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
python元组和字典的内建函数实例详解
2019/10/22 Python
Python 私有化操作实例分析
2019/11/21 Python
英国名牌男装店:Standout
2021/02/17 全球购物
办公室文秘岗位职责
2013/11/15 职场文书
《白鹅》教学反思
2014/04/13 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
护理见习报告范文
2014/11/03 职场文书
写给导师的自荐信
2015/03/06 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
校园安全教育心得体会
2016/01/15 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
你真的会用Mysql的explain吗
2022/03/31 MySQL