说明:一些基本的代码我都进行了注释,这里实现的验证码位数、需要用的字符串都可以再设置。有我的注释,大家应该很容易能看得懂。

基本思路:

1.用mt_rand()随机生成数字确定需要获取的字符串,对字符串进行拼接(觉得生成的验证码觉得有点太挤,大家可以再字符串中间拼接个空格键),实现随机验证码;

备注:建议大家用mt_rand(),而不是rand(),前者效率更高

2.利用gd库生成图片,把随机字符串写到图片输出。

效果:

每次刷新,都生成一个随机验证,后期我可能还会补充怎么实现随机码点击图片就再次更新

代码:

<?php
// 创建画布
$width = 120; // 规定画布的宽高
$height = 45;
$image = imagecreatetruecolor($width, $height); // 创建一幅真彩色图像
// 添加一些即将用到的颜色
$white = imagecolorallocate($image, 0xf2, 0xec, 0xe0);
$orange = imagecolorallocate($image, 0xff, 0xa5, 0x4c);
// 对画布背景填充颜色
imagefill($image, 0, 0, $white); //mt_rand 获取随机数 mt_rand(min, max);
function str_rand(){
$str="abcdefghijkmnpqrstuvwxyz0123456789ABCDEFGHIGKLMNPQRSTUVWXYZ";
$rand="";
for($i=0; $i<5; $i++){//获取5个随机的字符串
$rand .= $str[mt_rand(0, strlen($str)-1)]; //如:随机数为30 则:$str[30]
}
return $rand;
}
$verifyCode=str_rand();
// 画一串字符串在画布上
imagestring($image, 10, 10, 10, "$verifyCode", $orange);
// 通知浏览器输出的是图像(png类型)
header('Content-Type: image/png');
// 输出到浏览器
imagepng($image);
// 释放图像资源

php学习笔记:利用gd库生成图片,并实现随机验证码的更多相关文章

  1. 一起学习PHP中GD库的使用(二)

    在日常的开发过程中,GD 库最常用的功能就是帮我们对图片进行一些处理,当然,除了处理已有的图片之外,它也可以直接来画图,就像我们最常见的图片验证码.今天的内容主要就是和画图有关,所以最后我们也会做一个 ...

  2. 一起学习PHP中GD库的使用(一)

    又到了一个大家非常熟悉的库了,对于图像图形的处理来说,GD 库是 PHPer 们绕不过去的一道坎.从很早很早的 CMS 或者 Discuz 时代,各类开源软件在安装的时候就会明确地指出 GD 库是它们 ...

  3. Objective-C学习笔记 利用协议实现回调函数

    来源:http://mobile.51cto.com/iphone-278354.htm Objective-C学习笔记 利用协议实现回调函数是本文要介绍的内容,主要是实现一个显示文字为测试的视图,然 ...

  4. 一起学习PHP中GD库的使用(三)

    上篇文章我们已经学习了一个 GD 库的应用,那就是非常常用的制作验证码的功能.不过在现实的业务开发中,这种简单的验证码已经使用得不多了,大家会制作出更加复杂的验证码来使用.毕竟现在的各种外挂软件已经能 ...

  5. php笔记之GD库图片创建/简单验证码

    燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it php画图:比如说验证码,缩略图,加水印都要用到GD库,所以要开启gd2库,才能用 首先找到php.in ...

  6. iOS学习笔记16-数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

  7. PHP利用GD库绘图和生成验证码图片

    首先得确定php.ini设置有没有打开GD扩展功能,測试例如以下 print_r(gd_info()); 假设有打印出内容例如以下,则说明GD功能有打开: Array ( [GD Version] = ...

  8. PHP学习笔记:利用gd库给图片打图片水印

    <?php $dst_path = '1.jpg';//目标图片 $src_path = 'logo1.png';//水印图片 //创建图片的实例 $dst = imagecreatefroms ...

  9. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

随机推荐

  1. [Android界面] 这样的选择器怎么实现?? 充值选择

    1  充值的或年纪的 或  1 先讲例子 http://blog.csdn.net/lmj623565791/article/details/48393217: 本文出自:[张鸿洋的博客] 一.概述 ...

  2. C# vs MySql

    MySqlHelper类 /// <summary> ///MySql操作类 /// </summary> public abstract class MySqlHelper ...

  3. 查看、关闭某一runlevel下自动启动的服务

    这些服务都在 /etc/init.d/ 目录下 1.查看 chkconfig --list | grep '3:on' Auditd - 安全审计工具: blk-availability 如果使用LV ...

  4. sql server版本

    10.00.1600 :SQL 2008 10.50.1600:SQL 2008 R2 10.50.2500:SQL 2008 R2 SP1

  5. 天猫浏览型应用的CDN静态化架构演变

    原文链接:http://www.csdn.net/article/2014-01-22/2818227-CDN-Architecture 在天猫双11活动中,商品详情.店铺等浏览型系统,通常会承受超出 ...

  6. nginx url自动加斜杠的问题

    nginx url自动加斜杠问题及301重定向 时间:2016-02-04 15:14:28来源:网络 导读:nginx url自动加斜杠问题及301重定向,URL指向一个目录并且在最后没有包含斜杠, ...

  7. java攻城狮之路(Android篇)--BroadcastReceiver&Service

    四大组件:activity 显示. contentProvider 对外暴露自己的数据给其他的应用程序.BroadcastReceiver 广播接收者,必须指定要接收的广播类型.必须明确的指定acti ...

  8. 【转载】solr初体验

    [1]http://cxshun.iteye.com/blog/1039445 由于工作原因,这段时间接触到solr,一个基于lucene的企业级搜索引擎.不怎么了解它的童鞋可以去GOOGLE一下. ...

  9. C#基础课程之六(临时表)DataTable使用方法

    DataTable 用法:赋取值操作,及报错情况 dataTable.Columns.Add("Name"); //Columns 对象获取该集合的全部列,添加列名. 默认stri ...

  10. Linux下U盘变成只读

    今天用Ubuntu给同学拷贝数据的时候,突然其中一个文件夹U盘就不能复制和删除了.再windows7下可以删除除修改的那个文件夹之外的数据,但修改的那个文件夹死活删除不掉,只读属性也去不掉.再Ubun ...