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获得当前的脚本网址
Dec 10 PHP
Uchome1.2 1.5 代码学习 common.php
Apr 24 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
基于PHP文件操作的详细诠释
Jun 21 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
php实现根据字符串生成对应数组的方法
Sep 22 PHP
php采集中国代理服务器网的方法
Jun 16 PHP
安装docker和docker-compose实例详解
Jul 30 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
php下intval()和(int)转换使用与区别
2008/07/18 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
浅谈php提交form表单
2015/07/01 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
js闭包用法实例详解
2016/12/13 Javascript
js实现拖拽功能
2017/03/01 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
提升python处理速度原理及方法实例
2019/12/25 Python
对python中各个response的使用说明
2020/03/28 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
什么是URL
2015/12/13 面试题
写好求职信第一句话的技巧
2013/10/26 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
劳动竞赛口号
2014/06/16 职场文书
音乐教师求职信范文
2015/03/20 职场文书
求职自我评价参考范文
2019/05/16 职场文书
python 提取html文本的方法
2021/05/20 Python