php原生自定义验证码,5分钟搞定你的问题
当然现在很多php的框架里面自带了很多很多验证码,我的这个验证码,也是当初刚刚入行的时候学习模仿的。现在照搬出来,希望对刚入门的朋友有所帮助。
************************************************************************************************************
<?php
class CaptchaLib extends Base{
private $length; //验证码长度
private $font; //设置字体1-5
public function __construct($length=4,$font=5){
$this->length = $length;
$this->font = $font;
}
/**
* @intro 生成随机字符串
*
* @param
*
* @author 十月桂花香十里
*
* @return
*/
private function generalCode(){
$char_array = array_merge(range('A','Z'),range(0,9));
$index = array_rand($char_array,$this->length);
shuffle($index);
//拼接验证码字符串
$str = '';
foreach($index as $i){
$str .= $char_array[$i];
}
//将生成的随机字符串保存到会话中
session_start();
$_SESSION['code'] = $str;
return $str;
}
/**
* @intro 生成验证码
*
* @param
*
* @author 十月桂花香十里
*
* @return
*/
public function generalCaptcha(){
$str = $this->generalCode();
//打开图片路径
$bg ='http://www.xxx.com/images/captcha/captcha_bg'.rand(1,5).'.jpg'; //这里引用你图片的存放的位置,记得注意不要被盗链了
$img = imagecreatefromjpeg($bg);
//定义字符串颜色,黑白概率为50%
$color = imagecolorallocate($img,0,0,0);
if(rand(1,2)==2){
$color=imagecolorallocate($img,255,255,255);
}
$x=(imagesx($img)-imagefontwidth($this->font)*strlen($str))/2;
$y=(imagesy($img)-imagefontheight($this->font))/2;
imagestring($img,$this->font,$x,$y,$str,$color);
//浏览器输出
header('content-type:image/png');
imagepng($img);
imagedestroy($img);
}
/**
* @intro 验证输入的验证码是否正确
*
* @param $code string 用户输入的验证码
*
* @author 十月桂花香十里
*
* @return bool 成功返回true,失败返回false
*/
public function checkCode($code){
return strtolower($code) == strtolower($_SESSION['code'])?true:false;
}
}
*******************************************************************
封装好的,直接复制就行,改一下背景图片地址就ok了,至于背景图片,我云盘分享一下就行。
(链接:http://pan.baidu.com/s/1i47wWKl 密码:sfvg)
php原生自定义验证码,5分钟搞定你的问题的更多相关文章
- JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)
前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...
- 五分钟搞定Go.js
五分钟搞定Go.js 1.基于html5~因为Go.js是一个依赖于HTML5特性的JavaScript库,所以需要确保您的页面声明它是一个HTML5文档,当然需要加载库 <!DOCTYPE ...
- Spring Boot 返回 XML 数据,一分钟搞定!
Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...
- zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》
本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图 zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...
- 一分钟搞定AlloyTouch图片轮播
一分钟搞定AlloyTouch图片轮播 轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹.除了一般的竖向滚动,A ...
- zookeeper核心-zab协议-《每日五分钟搞定大数据》
上篇文章<paxos与一致性>说到zab是在paxos的基础上做了重要的改造,解决了一系列的问题,这一篇我们就来说下这个zab. zab协议的全称是ZooKeeper Atomic Bro ...
- windows+mysql集群搭建-三分钟搞定集群
注:本文来源: 陈晓婵 < windows+mysql集群搭建-三分钟搞定集群 > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...
- 十分钟搞定pandas内容
目录 十分钟搞定pandas 一.创建对象 二.查看数据 三.选择器 十二.导入和保存数据 参考:http://pandas.pydata.org/pandas-docs/stable/whatsne ...
- HDFS-异常大全-《每日五分钟搞定大数据》
点击看<每日五分钟搞定大数据>完整思维导图以及所有文章目录 问题1:Decomminssioning退役datanode(即删除节点) 1.配置exclude: <name>d ...
- 转载-30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)
原文:30分钟搞定后台登录界面(103个后台PSD源文件.素材网站) 目录 一.界面预览 二.PSD源文件预览 三.工具分享 四.资源说明 五.素材下载网站 六.下载 去年八月时要做一个OA系统为 ...
随机推荐
- linux(ubuntu)获取命令源码方式
以下载ls的源码为例说明: 首先要知道ls是属于哪个包的,可以通过下面命令: #dpkg -S 'command name' 通用格式 $ dpkg -S /bin/ls 得到如下结果: coreut ...
- SAP RFC函数远程调试跟踪管理软件
最近在搞OA系统与sap的接口开发,接口太多老是和.net的开发人员打嘴仗,为了避免不必要的纠结,自己做了一个rfc的调试工具,有些问题调试起来也比较容易了.程序是delphi开发的,为了保证程序可以 ...
- MSMQ队列学习记录
微软消息队列-MicroSoft Message Queue(MSMQ) 使用感受:简单. 一.windows安装MSMQ服务 控制面板->控制面板->所有控制面板项->程序和功能- ...
- JavaScript巧学巧用
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 由于工作和生活上的一些变化,最近写文章的频率有点下降了,实在不好意思,不过相信不久就会慢慢恢复过来, ...
- 自定义TextView跑马灯
本篇主要介绍TextView的可控制跑马灯效果实现. Android自带的TextView添加几个属性就可以实现跑马灯效果,大概是这样 android:ellipsize="marquee& ...
- 频繁模式挖掘中Apriori、FP-Growth和Eclat算法的实现和对比
最近上数据挖掘的课程,其中学习到了频繁模式挖掘这一章,这章介绍了三种算法,Apriori.FP-Growth和Eclat算法:由于对于不同的数据来说,这三种算法的表现不同,所以我们本次就对这三种算法在 ...
- focus、blur事件的事件委托处理(兼容各个流浏览器)
今天工作中遇到个问题,问题是这样的,一个form表单中有比较多的input标签,因为form中的input标签中的值都需要前端做客户端校验,由于本人比较懒而且特不喜欢用循环给 每个input元素添加b ...
- Composer 常用命令总结(三)
init(初始化) 该命令用于创建 composer.json 文件,并进行基础信息配置: $ composer init 可以配置Package name.Description.Author.Mi ...
- JavaScript 中有关Array操作的一些函数
JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素. 要取得Array的长度,直接访问length属性: var arr = [1, 0.222, 'Hi', null, ...
- opencv探索之路(一):win10 X64+VS2015+opencv3.10安装教程
我的电脑64位Win10系统,现在利用VS2015安装opencv3.10.安装之路颇为艰辛,从一开始的VS2015的安装,到opencv的安装,都充满挑战,历经千辛万苦终于把opencv开发环境搭建 ...