一个验证码需要有以下步骤:

  • 验证底图
  • 验证码内容
  • 生成验证码
  • 对比校验

验证码需要依靠PHP的GD扩展库。一些集成环境是默认安装了GD拓展库。

<?php
//创建一个100*30px图片,默认黑色
$image = imagecreatetruecolor(100, 30);
//给$image背景图片分配颜色,后三个参数是颜色的RGB.255,255,255白色
$bgcolor = imagecolorallocate($image,255,255,255);
//填充$image颜色为$bgcolor,中间两个为坐标。
imagefill($image, 0, 0, $bgcolor);
for($i=0;$i<4;$i++){
$fontsize = 6;
$fontcolor = imagecolorallocate($image,0,0,0);
$fontcontent = rand(0,9);
//x,y即为坐标。
$x = ($i*100/4) + rand(5,10);
$y = rand(5,10);
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
} header("content-type:image/png");
//输出图片的时候一定要使用header告诉PHP其格式。
imagepng($image);
imagedestroy($image);
?>

跟着百度学PHP[16]-验证码的学习的更多相关文章

  1. 跟着百度学PHP[14]-PDO之Mysql的事务处理2

    前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了. 将自动提交关闭. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT 将其设置为0即可关闭,如:$pd ...

  2. 跟着百度学PHP[8]-setcookie的其他参数学习

    setcookie(name,value,time,path,domain,secure) 第四个参数是cookie的有效路径.顾名思义就是在那个路径下是有效的.当然了其子目录下也是有效的.比如 /h ...

  3. 跟着百度学PHP[5]函数篇1-参数

    ps:俺的文章俺懂就行.大家不要拿来学习不然每个人的学习思路不一样.看视屏文章的老师不同笔记不同加上我也是新手上路,还怕误导!请大家看行且思考,帮忙挖Bug也可以. 案例要求:你可以写一个两行三列的表 ...

  4. 跟着百度学PHP[4]OOP面对对象编程-13-魔术方法__set(),__get(),__isset(),__unset()

    __set() 在对象访问私有成员的时候自动被调用,达到了给你看,但是不能给你修改的效果!(在对象访问一个私有的成员的时候就会自动的调用该魔术方法) __get() 方法用于获取私有属性值.(在设置私 ...

  5. 跟着百度学PHP[4]OOP面对对象编程-6-构造方法(__construct)和构析方法(__destruct)

    函数就是成员方法(方法有三:构造方法.成员方法.析构方法) 下面是两种方法. 构造方法和构析方法 00x1 构造方法 构造方法会在创建对象之后自动调用.其名称为__construct <?php ...

  6. 跟着百度学PHP[4]OOP面对对象编程-5-内部引用$this

    $this就是对象内部代表这个对象的引用 可以调用被封装的方法或者属性! <?php class Person{ private $name; "; var $sex; functio ...

  7. 跟着百度学PHP[4]OOP面对对象编程-4-对象成员的访问 ->

    使用一个减号一个尖括号->来达到访问对象成员. $object->方法 来看案例. <?php class Person{ private $name; "; var $s ...

  8. 跟着百度学PHP[4]-OOP面对对象编程-3-实例化一个对象

    当定义好类后,我们使用new关键字来实例化一个对象! 格式: $object = new 类名; <?php class Person{ private $name; "; priva ...

  9. 跟着百度学PHP[4]-OOP面对对象编程-2-属性和方法

    简单的说 变量就是成员属性函数就是成员方法(方法有三:构造方法[即为__construct].成员方法.析构方法[__destruct]) 成员方法和成员属性都是可以加修饰词.比如封装性的方法或者属性 ...

随机推荐

  1. [转]Working with Transactions (EF6 Onwards)

    本文转自:http://www.cnblogs.com/xiepeixing/p/5275999.html Working with Transactions (EF6 Onwards) This d ...

  2. Android Killer

    首先,我们先看一Android界有名的大神写关于Android反编译的博客: 郭 大 侠:http://blog.csdn.net/guolin_blog/article/details/497380 ...

  3. SQL 之 Group By

    SQL 之 Group By Group By从字面意义上理解就是根据By指定的规则对数据进行分组,所谓的分组就是将一个数据表划分成若干个小区域. 例如:有这么一张表

  4. LeetCode56:Jump Game

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  5. Cocos2d-x3.0游戏实例之《别救我》第七篇——物理世界的碰撞检測

    事实上我也非常吃惊-居然写到第七篇了,我估计也就是四篇的内容,感觉非常奇妙,我也不会非常唠叨什么吖);    // 0001 );   // 0001 ); // 0001 这样我们才干监听到它们的碰 ...

  6. Spring MVC入门Demo

    1 参考http://blog.csdn.net/haishu_zheng/article/details/51490299,用第二种方法创建一个名为springmvcdemo的Maven工程. 2  ...

  7. JQuery插件:动态列和无间隙网格布局Mason.js

    来源:GBin1.com 在线演示 JavaScript提供很多强有力的方案,解决动态列的网格布局(例如:Pinterest).这些方案很有效,但是,有时候,会造成网格的间隙或粗糙的边缘. Mason ...

  8. html热点区域

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Android五天乐(第二天)Activity跳转与传输数据,Fragment

    1 Activity的生命周期 activity在生命周期内共同拥有执行.暂停,和停止三种状态.每次发生状态转换时,都有一个Activity方法将状态改变的消息通知给activity.activity ...

  10. iOS 滑块拼图游戏(Puzzle8)

    代码地址如下:http://www.demodashi.com/demo/11505.html 一.准备工作 先了解一个定义和定理 定义:在一个1,2,...,n的排列中,如果一对数的前后位置与大小顺 ...