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 05 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
Windows PHP5和Apache的安装与配置
Jun 08 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
php处理复杂xml数据示例
Jul 11 PHP
php多线程并发实现方法
Sep 30 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
详解php语言最牛掰的Laravel框架
Nov 20 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 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
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
javascript 解析url的search方法
2010/02/09 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
js实现筛选功能
2020/11/24 Javascript
python中的yield使用方法
2014/02/11 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
pow在python中的含义及用法
2019/07/11 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
Pytorch转tflite方式
2020/05/25 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Keras 使用 Lambda层详解
2020/06/10 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
附答案的Java面试题
2012/11/19 面试题
工作睡觉检讨书
2014/02/25 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
保研导师推荐信
2015/03/25 职场文书
素质教育培训心得体会
2016/01/19 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB