怎样制作PHP验证码?
<?php
/**
*制作验证码
*1.启动session
*2.设定标头
*3.创建画布
*4.创建颜色
*5.创建随机数并放到画布上
*6.将得到的若干随机数放入session中
*7.添加干扰点或干扰线
*8.输出画布
*9.销毁画布资源
*/
//1.启动session
session_start();
//2.设定标头指定MIME输出类型
header('Content-Type:image/png');
//3.创建画布
$width = 100;
$height = 30;
$im = imagecreate($width,$height);
//4.创建颜色
$bgcolor = imagecolorallocate($im,255,255,255);
$textcolor = imagecolorallocate($im,0,255,255);
$randcolor = imagecolorallocate($im,mt_rand(0,200),mt_rand(0,200),mt_rand(0,200));
//5.创建随机数并放到画布上
$verify=null;
for($i=0;$i<4;$i++){
$temp = mt_rand(0,9);
$verify.=$temp;
imagestring($im,5,$i*15+15,8,$temp,imagecolorallocate($im,mt_rand(0,200),mt_rand(0,200),mt_rand(0,200)));
}
//6将生成的随机数放入session中
$_SESSION['verify'] = $verify;
//7.添加干扰点
for($i=0;$i<100;$i++){
imagesetpixel($im,rand(0,$width),rand(0,$height),imagecolorallocate($im,rand(100,255),rand(100,255),rand(100,255)));
}
//8.将图像输出
imagepng($im); //imagegif()
//9.销毁一图像
imagedestroy($im);
?>
怎样制作PHP验证码?的更多相关文章
- python之使用PIL模块制作随机验证码
制作随机验证码,需要如下知识点: 1.随机验证码的制作(这里用的是random模块随机产生字符) 2.图片的制作 3.随机直线干扰项 4.其他随机干扰项 代码如下: from PIL import I ...
- 笔记11:GDI 制作数字验证码
大二学长让我学下GDI绘制验证码,然后自己就试了试了.找了点视频看了下. 现在会画直线,矩形,字符串,制作验证码 一.绘制一条直线 private void button1_Click(object ...
- java 用Graphics制作模糊验证码
这篇随笔主要是java中制作验证码的效果,由于是在国庆前做的,现在也找不到原载了.我对自己整理的发表一份 生成的验证码效果如下: 一.建立一个工具类,用来生成验证码 package com.dkt.u ...
- Python简单的制作图片验证码
-人人可以学Python--这里示范的验证码都是简单的,你也可以把字符扭曲 人人可以学Python.png Python第三方库无比强大,PIL 是python的一个d第三方图片处理模块,我们也可以使 ...
- 原生javascript 制作canvas 验证码
<canvas id="></canvas> <a href="#" id="changeImg">看不清,换一张 ...
- JAVA_SE基础——71.Random类制作随机验证码
public class Demo5 { public static void main(String[] args) { char[] arr={'s','b','g','h','a','c'}; ...
- canvas制作随机验证码
看到人家彩色背景的验证码想测试一下: 创建html代码: <canvas id="myCanvas" width="200" height="1 ...
- js+canvas制作前端验证码
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java Web制作登录 验证码
具体操作如下: 新建一个servlet,代码如下:标记一个WebServlet, @WebServlet(urlPatterns = {"/checkCode"}) //验证码Se ...
随机推荐
- 【Java重构系列】重构31式之封装集合
2009年,Sean Chambers在其博客中发表了31 Days of Refactoring: Useful refactoring techniques you have to know系列文 ...
- ROS学习笔记(九)——ROSSERVICE
NEW 1 $ roscore NEW 2 $ rosrun turtlesim turtlesim_node NEW 3 $ rosrun turtlesim turtle_teleop_key N ...
- Android开发艺术探索(一)——Activity的生命周期和启动模式
Activity的生命周期和启动模式 生命周期有? 1.典型情况下的生命周期—>指有用户参与的情况下,Activity所经过的生命周期改变 2.异常情况下的生命周期—>指Activity被 ...
- Android五大布局重新回顾
- 如何在ubuntu下使用stage3d的硬件加速
最近想尝试一下心动的新游戏深渊,但是由于公司的电脑是ubuntu的,只要进游戏就提示说没有stage3d的硬件加速,于是google了一下,发现这么一篇文章 http://phoronix.com/f ...
- 微软称iPad版Office必来临 目前在完善中
[PConline 资讯]微软在今年6月份的时候面向iPhone发布了Office,同时需要用户注册Office 365.而鲍尔默今天在参加Garnter科技研讨会时透露,iPad版本的Office始 ...
- Linux安装程序Anaconda分析
1.概述 Anaconda是RedHat.CentOS.Fedora等Linux的安装管理程序.它能够提供文本.图形等安装管理方式,并支持Kickstart等脚本提供自己主动安装的功能.此外, ...
- 第三篇——第二部分——第五文 配置SQL Server镜像——域环境SQL Server镜像日常维护
本文接上面两篇搭建镜像的文章: 第三篇--第二部分--第三文 配置SQL Server镜像--域环境:http://blog.csdn.net/dba_huangzj/article/details/ ...
- [Javascript] delete keyword
delete keyword doesn't actually delete the value but just the reference. var me = { name: { first: & ...
- keepalive support-----Programming applications
TCP Keepalive HOWTO Prev Next 4. Programming applications This section deals with programming code ...