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保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
php while循环得到循环次数
Oct 26 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
php数据访问之增删改查操作
May 09 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
PHP+ajax实现获取新闻数据简单示例
May 08 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 PHP
详解Laravel框架的依赖注入功能
May 27 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
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
ThinkPHP中U方法的使用浅析
2014/06/13 PHP
微信红包随机生成算法php版
2016/07/21 PHP
Yii2中datetime类的使用
2016/12/17 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
javascript XML数据显示为HTML一例
2008/12/23 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
python中解析json格式文件的方法示例
2017/05/03 Python
django正续或者倒序查库实例
2020/05/19 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
旅游文化节策划方案
2014/06/06 职场文书
交通事故和解协议书
2014/09/25 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
应届生简历自我评价
2015/03/11 职场文书
高中运动会广播稿
2015/08/19 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS