php实现可运算的验证码


Posted in PHP onNovember 10, 2015

本文分享了php实现可运算的验证码的代码实例,希望对大家的学习有所帮助。

demo.php代码

<?php 
session_start(); 
if(!emptyempty($_POST['Login'])){ 
  if(md5(strtoupper($_POST['Login'])) == $_SESSION['Login']){ 
    echo 'Correct'; 
  }else{ 
    echo 'Error';   
  } 
} 
?> 
 
<form method="post"> 
  <input type="text" name="Login" value="" /><img src="img.php?Action=Login&imgW=80&imgH=30" align="absmiddle"> 
  <input type="submit" value="Login" /> 
</form>

img.php代码

<?php 
session_start(); 
 /** 
* 随机的数字,之和验证码 
* 修改日期 2006-12-20 
*/ 
function getCode ($length = 32, $mode = 0) 
{ 
switch ($mode) 
{ 
   case '1': 
     $str = '123456789'; 
      break; 
 case '2': 
      $str = 'abcdefghijklmnopqrstuvwxyz'; 
      break; 
 case '3': 
      $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
      break; 
 case '4': 
      $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 
      break; 
 case '5': 
      $str = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789'; 
      break; 
    case '6': 
      $str = 'abcdefghijklmnopqrstuvwxyz1234567890'; 
      break; 
    default: 
      $str = 'ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'; 
      break; 
} 
 
$result = ''; 
$l = strlen($str)-1; 
for($i = 0;$i < $length;$i ++) 
{ 
 $num = rand(0, $l); 
 $result .= $str[$num]; 
} 
return $result; 
} 
//建立验证图片 
function createAuthNumImg($randStr,$imgW=100,$imgH=40,$fontName) 
{ 
header ("content-type: image/png"); 
$image = imagecreate($imgW , $imgH); 
$color_white = imagecolorallocate($image , 255 , 255 , 255); 
$color_gray = imagecolorallocate($image , 228 , 228 , 228); 
$color_black = imagecolorallocate($image , 255 , 102 , 204); 
for ($i = 0 ; $i < 1000 ; $i++) 
{ 
 imagesetpixel($image , mt_rand(0 , $imgW) , mt_rand(0 , $imgH) , $color_gray); 
} 
imagerectangle($image , 0 , 0 , $imgW - 1 , $imgH - 1 , $color_gray); 
for ($i=10;$i<$imgH;$i+=10) 
 imageline($image, 0, $i, $imgW, $i, $color_gray); 
imagettftext($image,16,5,3,25,$color_black,$fontName,$randStr); 
for ($i=10;$i<$imgW;$i+=10) 
 imageline($image, $i, 0, $i, $imgH, $color_gray); 
imagepng($image); 
imagedestroy($image); 
} 
 
$a=GetCode(1,1); 
$b=GetCode(1,1); 
$c=GetCode(1,1); 
$Passport=$a."+".$b."+".$c; 
$Total=$a+$b+$c; 
$Total; 
$_SESSION[$_GET['Action']]=md5(strtoupper($Total)); 
createAuthNumImg($Passport,$_GET['imgW'],$_GET['imgH'],"verdana.ttf"); 
?>

以上就是为大家介绍的php可运算的验证码全部代码,希望对大家的学习有所帮助。

PHP 相关文章推荐
php 应用程序安全防范技术研究
Sep 25 PHP
php smarty模版引擎中的缓存应用
Dec 11 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
php提交post数组参数实例分析
Dec 17 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 #PHP
深入理解PHP内核(二)之SAPI探究
Nov 10 #PHP
深入理解PHP内核(一)
Nov 10 #PHP
在PHP中使用FastCGI解析漏洞及修复方案
Nov 10 #PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 #PHP
再推荐十款免费的php开发工具
Nov 09 #PHP
php开发工具有哪五款
Nov 09 #PHP
You might like
PHP生成Flash动画的实现代码
2010/03/12 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
jQuery Ajax文件上传(php)
2009/06/16 Javascript
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
星球大战与Python之间的那些事
2016/01/07 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
对python读取zip压缩文件里面的csv数据实例详解
2019/02/08 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
应届生保险求职信
2013/11/11 职场文书
计算机软件个人的自荐信范文
2013/12/01 职场文书
二手房买卖协议书
2014/04/10 职场文书
电子商务求职信
2014/06/15 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
天河观后感
2015/06/11 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技