为了防止用户利用机器人自动注册、登录、灌水,现在网站一般都采用了验证码技术,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

昨天做学习有一个作业需要自己写图片验证码,写完之后我把它记录下来作为一篇笔记。

先展示一下我做出来的效果(自己也可根据自己的要求对图片背景、随机数位数、颜色等进行调整)

php代码如下:

文件名: idcode.php

<?php
session_start();//开启会话
$img = imagecreatetruecolor(60, 30);//创建真彩图像资源,大小60*30
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);//分配一个黑色
$green = imagecolorallocate($img, 0x00, 0xFF, 0x00);//分配一个绿色
$white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);//分配一个白色
imagefill($img,0,0,$white);// 从左上角开始填充白色,即背景颜色为白色
//生成随机的验证码
$code = '';
for($i = 0; $i < 4; $i++) {
$code .= rand(0, 9);
}
$_SESSION['vCode']=$code;//加入会话变量中
imagestring($img, 5, 8, 8, $code, $black);//imagestring ($image , $font , $x , $y ,$s ,$col )
//加入噪点干扰,阻止机器识别
for($i=0;$i<100;$i++) {
imagesetpixel($img, rand(0, 60) , rand(0, 30) , $black);//在图片上绘出一点。参数 x、y 为欲绘点的坐标,参数 col 表示该点的颜色
imagesetpixel($img, rand(0, 60) , rand(0, 30) , $green);//绘制绿色的点
}
//输出验证码
header("content-type: image/png");//说明欲输出的图片类型格式
imagepng($img);//函数用来建立一张 PNG 格式图形
imagedestroy($img);//销毁图像,释放与 $img 关联的内存

  引入HTML中:

 <img src="php/idcode.php" alt="">

  最后我的效果如下:

php随机生成验证图片的更多相关文章

  1. Python(三) PIL, Image生成验证图片

    Python(三) PIL, Image生成验证图片 安装好PIL,开始使用. 在PyCharm中新建一个文件:PIL_Test1.py 1 # PIL 应用练习 2 # 3 # import PIL ...

  2. PHP随机生成广告图片的实例 代码

    PHP随机生成广告图片: <?php /*  +------------------------------------------------------------------+  | Mi ...

  3. Django随机生成验证码图片

    PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 ...

  4. 【Javascript + Vue】实现随机生成迷宫图片

    前言 成品预览:https://codesandbox.io/s/maze-vite-15-i7oik?file=/src/maze.js 不久前写了一篇文章介绍了如何解迷宫:https://www. ...

  5. python练习册 0002随机生成验证

    这个题需要用到random库的方法,不用就会忘,暂把random库的常用方法贴出来 import random import string # 随机整数 # randint(a, b),生成a~b之间 ...

  6. java实现随机验证码的图片

    链接地址:http://blog.sina.com.cn/s/blog_407a68fc010006qo.html 1.一共需要2个常用java文件(RandomCode.java和RandomCod ...

  7. 第二百七十节,Tornado框架-生成验证码图片,以及验证码结合Session验证

    Tornado框架-生成验证码图片,以及验证码结合Session验证 第一.生成验证码图片  生成验证码图片需要两个必须模块 1.python自带的random(随机模块) 2.Pillow()图像处 ...

  8. java生成随机六位数的验证码&随机生成十位数ValidCode码,用于邮件的验证&检查是不是符合为合法的中国的手机号码

    package com.demo.test1; import java.security.NoSuchAlgorithmException; import java.security.SecureRa ...

  9. java web学习总结(九) -------------------通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:

随机推荐

  1. mybatis是什么?(二)

    mybatis是什么? mybatis是一个持久层的框架,是apache下的顶级项目. mybatis托管到goolecode下,再后来托管到github下(https://github.com/my ...

  2. Django学习之站点缓存详解

      本文和大家分享的主要是django缓存中站点缓存相关内容,一起来看看吧,希望对大家学习django有所帮助. 缓存整个站点,是最简单的缓存方法 在 MIDDLEWARE_CLASSES 中加入 “ ...

  3. iOS 判定string是不是中文字符

    +(BOOL)IsChinese:(NSString *)str { ; i< [str length];i++) { int a = [str characterAtIndex:i]; if( ...

  4. css position弹性盒子测试

    总结: 1.利用样式height:100%设置div高度为全屏时候必须设置所有的父元素,但是父元素那么多,不可控,所以此法不可行: 2.设置父框架的padding为100px,div进行float,p ...

  5. CSS3学习笔记(3)—左右飞入的文字

    前几天看到一个企业招聘的动画觉得很炫,里面有个企业介绍的文字是用飞入的效果做出来的,今天尝试了写了一下,感觉还不错~\(≧▽≦)/~啦啦啦 下面来看我做的动态效果: 其实上面的效果很简单的,我的截图软 ...

  6. 'gbk' codec can't encode character '\xa5' in position 4546: illegal multibyte sequence错误解决

    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030') 原文 http://blog.csdn.net/jim7424 ...

  7. mysql学习笔记(七)—— MySQL内连接和外连接

        MySQL内连接(inner join on) MySQL的内连接使用inner join on,它的效果跟使用where是一样的,如果联结的是两个表,那么需要左右的条件或者说字段是需要完全匹 ...

  8. RobotFramework教程使用笔记——web自动化测试弹窗处理

    在web自动化测试中会遇到各种弹出框,在selenium中有对这些弹出框的处理. 弹出框一般有这么几类: 1.普通的弹出窗口,如果是可以定位的,直接定位到窗口,然后进行相应的操作. 2.如果是浏览器系 ...

  9. XML中CDATA和#PCDATA的区别

    在XML文档中, 能看到“CDATA"的地方有三处: 1)在DTD中,指定标签中某个属性的类型为字符型时,使用CDATA.因为XML解析器会去分析这段字符内容,因而里面如果需要使用>, ...

  10. 【概念】SVG(1)

    ok,我们讲讲svg 学习前提:懂HTML和基本的XML SVG简介: 1.SVG全称Scable Vector Graphic,可伸缩的矢量图 2.SVG用于定义针对于Web的基于矢量的图形 3.S ...