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调用Oracle存储过程
Oct 09 PHP
在PHP中使用模板的方法
May 24 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
php $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
Jun 21 PHP
php简单生成随机数的方法
Jul 30 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 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
德生PL330的评价与改造
2021/03/02 无线电
php简单封装了一些常用JS操作
2007/02/25 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
Python安装selenium包详细过程
2019/07/23 Python
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
2019年分享net面试的经历和题目
2016/08/07 面试题
建筑工程技术应届生求职信
2013/11/17 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
五年级上册复习计划
2015/01/19 职场文书
小学少先队活动总结
2015/05/08 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
企业催款函范本
2015/06/24 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python