php5 图片验证码实现代码


Posted in PHP onDecember 11, 2009

GD库的函数
1,imagecreatetruecolor -----创建一个真彩色的图像
imagecreatetruecolor(int x_size,int y_size) //x表示宽,y表示高
2,imagecolorallocate 为一幅图像分配颜色(调色板)
imagecolorallocate(resource image,int red,int green,int blue)//red,green,blue----三原色
3,imagestring 绘图函数
iamgestring(resource image,font,int x,int y,内容,颜色);
4,输出函数
php的header是定义头的动作,php5中支持3中类型:
1,Content-type:xxxx/yyyy
2,Location:xxxx:yyyy/zzzz
3,Status:nnn xxxxxx
xxxx/yyyy表示内容文件的类型
如:image/gif
image/jpeg
image/png
例子:header("Content-type:image/jpeg")
GD库中有对应的image类型
imagejpeg(),imagegif(),imagepang()
5,imageline画线函数
iamgeline(resource image,int x1,int y1,int x2,int y2,int color);
image ---图片
x1 ---启始坐标
y1
x2 ---终点坐标
y2
6,imagesetpixel画点函数
imagesetpixel(resource image,int x,int y,int color)
7,imagettftext带字体的写入函数
imagettftext(resource image,float size,float angle,int x,int y,int color,string fontfile,string text)
8,php验证码插入中文的方法
iconv("gb2312","utf-8","字符串"); //首先要将文字转换成utf-8格式
9,随机函数
1,rand([int min,int max]) //rand(1,4) 生成1-4的数
2, dechex(十进制数) //转换为十六进制
做验证码的步骤:
生成随机数 -- 创建图片 -- 随机数写成图片 --保存在session中
输入验证码例子
gdchek.php

<?php 
/* 
* 生成图片验证码 
* and open the template in the editor. 
*/ 
session_start(); 
for($i=0;$i<4;$i++){ 
$rand.=dechex(rand(1,15)); //生成4位数包含十六进制的随机数 
} 
$_SESSION[check_gd]=$rand; 
$img=imagecreatetruecolor(100,30); //创建图片 
$bg=imagecolorallocate($img,0,0,0); //第一次生成的是背景颜色 
$fc=imagecolorallocate($img,255,255,255); //生成的字体颜色 
//给图片画线 
for($i=0;$i<3;$i++){ 
$te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255)); 
imageline($img,rand(0,15),0,100,30,$te); 
} 
//给图片画点 
for($i=0;$i<200;$i++){ 
$te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255)); 
imagesetpixel($img,rand()%100,rand()%30,$te); 
} 
//首先要将文字转换成utf-8格式 
//$str=iconv("gb2312","utf-8","呵呵呵"); 
//加入中文的验证 
//smkai.ttf是一个字体文件,为了在别人的电脑中也能起到字体作用,把文件放到项目的根目录,可以下载,还有本机C:\WINDOWS\Fonts中有 
imagettftext($img,11,10,20,20,$fc,"simkai.ttf","你好你好"); 
//把字符串写在图片中 
//imagestring($img,rand(1,6),rand(3,70),rand(3,16),$rand,$fc); 
//输出图片 
header("Content-type:image/jpeg"); 
imagejpeg($img); 
?>

login.php
<?php 
/* 
* 
* 
*/ 
session_start(); 
if($_POST[sub]){ 
//判断验证码是否相同 
if($_POST[gd_pic]==$_SESSION[check_gd]){ 
echo "验证成功!"; 
}else{ 
echo "验证码错误"; 
} 
} 
?> 
<form action="login.php" method="POST"> 
用户名:<input type="text" name="user"/><br> 
密码:<input type="password" name="pwd"/><br> 
验证码:<imput type="text" name="gd_pic"/><img src="gdchek.php"><br> 
<imput type="submit" name="sub" value="submit"/> 
</form>
PHP 相关文章推荐
建立文件交换功能的脚本(二)
Oct 09 PHP
php生成xml简单实例代码
Dec 16 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
php 文件上传类代码
Aug 06 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
CI配置多数据库访问的方法
Mar 28 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
PHP实现动态添加XML中数据的方法
Mar 30 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
关于PHP求解三数之和问题详析
Nov 09 PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 #PHP
一个比较简单的PHP 分页分组类
Dec 10 #PHP
PHP 采集程序中常用的函数
Dec 09 #PHP
Php 构造函数construct的前下划线是双的_
Dec 08 #PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 #PHP
PHP 用数组降低程序的时间复杂度
Dec 04 #PHP
PHP 柱状图实现代码
Dec 04 #PHP
You might like
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
javascript void(0)的妙用
2009/10/21 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
js实现将选中内容分享到新浪或腾讯微博
2015/12/16 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
vuejs指令详解
2017/02/07 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
Vue父组件监听子组件生命周期
2020/09/03 Javascript
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
与死神共舞观后感
2015/06/15 职场文书
导游词之无锡古运河
2019/11/14 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS