当然现在很多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分钟搞定你的问题的更多相关文章

  1. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)

    前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...

  2. 五分钟搞定Go.js

    五分钟搞定Go.js  1.基于html5~因为Go.js是一个依赖于HTML5特性的JavaScript库,所以需要确保您的页面声明它是一个HTML5文档,当然需要加载库 <!DOCTYPE ...

  3. Spring Boot 返回 XML 数据,一分钟搞定!

    Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...

  4. zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》

    本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图   zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...

  5. 一分钟搞定AlloyTouch图片轮播

      一分钟搞定AlloyTouch图片轮播 轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹.除了一般的竖向滚动,A ...

  6. zookeeper核心-zab协议-《每日五分钟搞定大数据》

    上篇文章<paxos与一致性>说到zab是在paxos的基础上做了重要的改造,解决了一系列的问题,这一篇我们就来说下这个zab. zab协议的全称是ZooKeeper Atomic Bro ...

  7. windows+mysql集群搭建-三分钟搞定集群

    注:本文来源:  陈晓婵   <  windows+mysql集群搭建-三分钟搞定集群   > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...

  8. 十分钟搞定pandas内容

    目录 十分钟搞定pandas 一.创建对象 二.查看数据 三.选择器 十二.导入和保存数据 参考:http://pandas.pydata.org/pandas-docs/stable/whatsne ...

  9. HDFS-异常大全-《每日五分钟搞定大数据》

    点击看<每日五分钟搞定大数据>完整思维导图以及所有文章目录 问题1:Decomminssioning退役datanode(即删除节点) 1.配置exclude: <name>d ...

  10. 转载-30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

    原文:30分钟搞定后台登录界面(103个后台PSD源文件.素材网站)   目录 一.界面预览 二.PSD源文件预览 三.工具分享 四.资源说明 五.素材下载网站 六.下载 去年八月时要做一个OA系统为 ...

随机推荐

  1. Struts2基础学习(五)—拦截器

    一.概述 1.初识拦截器      Interceptor 拦截器类似前面学过的过滤器,是可以在action执行前后执行的代码,是我们做Web开发经常用到的技术.比如:权限控制.日志等.我们也可以将多 ...

  2. jmeter 使用jmeter 录制 手机APP脚本

    1.打开jmeter.鼠标右击工作台.添加HTTP代理服务器 2.设置配置jmeter.手机无线网络.(目标控制器也可以选择加到线程组中) 3.添加查看结果树 4.启动完成后.操作手机.jmeter就 ...

  3. 使用Microsoft SQL Server Migration Assistant for Oracle迁移数据库

    前言:使用Microsoft SQL Server Migration Assistant for Oracle迁移Oracle数据库到SqlServer数据库. 准备:Oracle11g.SqlSe ...

  4. 如何修改Xampp服务器上的mysql密码

    今天自己在搞php的过程中发现,如果我们使用Xampp服务器自带数据库mysql,就必须先修改mysql的密码,大家都知道,mysql的初始面为空,但是如果连接数据库是密码为空就会报错,在网上查找了很 ...

  5. vim工具

    今天和同事讨论使用什么看代码,使用什么写代码的问题.我觉得source insight用来看代码真的还是蛮舒服的,但是他觉得他习惯了VS,用着顺手. 但是我的想法是,有好的工具,得先花点时间去学习使用 ...

  6. Go-Redis

    redis的client有好多好多,go语言的client在redis官方有两个推荐,radix和redigo.选择哪一个好呢?确实很纠结,后来掷硬币决定选择redigo了. redis.go.red ...

  7. java Http消息传递之POST和GET两种方法

    /** * 通过Get方法来向服务器传值和获取信息, * 这里举例假设的前提是,链接上服务器,服务器直接发送数据给本地 * * 大体的思路: * 1.首先通过URL地址来获得链接的借口 * 通过接口, ...

  8. ORB_SLAM2之Pangolin的安装与问题处理

    前言 本篇博客中,我们主要介绍了在安装ORB_SLAM2所需的第三方库Pangolin的过程中遇到的一些问题及解决方法. 1.Pangolin是什么? Pangolin是一个用于OpenGL显示/交互 ...

  9. 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 F - Piggy-Bank 【完全背包问题】

    https://vjudge.net/contest/68966#problem/F http://blog.csdn.net/libin56842/article/details/9048173 # ...

  10. OC中@class的使用

    作用: 可以简单地引用一个类简单使用@class Dog; //类的引入 #import "Dog.h"仅仅是告诉编译器:Dog是一个类;并不会包含Dog这个类的所有内容 具体使用 ...