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函数 serialize()和unserialize()
Feb 04 PHP
浅析十款PHP开发框架的对比
Jul 05 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
PHP http请求超时问题解决方案
Nov 13 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
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
VSCode配合pipenv搞定虚拟环境的实现方法
2020/05/17 Python
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
.net笔试题
2014/03/03 面试题
公司营业员的工作总结自我评价
2013/10/05 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
七夕情人节促销方案
2014/06/07 职场文书
关爱残疾人标语
2014/06/25 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
初婚未育证明样本
2015/06/18 职场文书
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
python 单机五子棋对战游戏
2022/04/28 Python