祝大家新年快乐!新年新气象!

一个验证码图片生成(刚写的,拿出来分享)

上一篇 / 下一篇  2007-10-21 15:15:16 / 个人分类:GD

查看( 1689 ) / 评论( 17 )
流程:
tt5IF`eIN:j0 1.随机出一个4位的随机数存到sessioon中
3w+Y9oD z)ix0 2.设置图片长和宽
xK1BKy0 3.创建图像
~P"Y%I MO5{8e~0 4.设置背景PHPChina 开源社区门户'M8T `S }ue y&m%Z
5.将随机数写入图片PHPChina 开源社区门户o?E,w$P:IxK r
6.加入干扰素(在图片上随机打印N个 点)PHPChina 开源社区门户4rX,Oq \ s6xi
7.给图片家边框PHPChina 开源社区门户 ?*k.xlqr
8.输出图片
)DskL,]0 //之后就是把用户输入的验证码数字跟 $_SESSION['login_validate'] 变量做比较就ok了
j^*K"Zy7s;Q%Z0 [php]<?php
N-g0t!Y m0GG(?N0 session_start();PHPChina 开源社区门户l5}Ww4HX n/p
//设置随机数种子
$nf-G0Qu;rj"?0 srand((double)microtime()*1000000);
FmMq [L |0 //随机出4个数字PHPChina 开源社区门户;DW5TN'm{6U7`fz

9@mt-Du!B0 for($i=0;$i<4;$i++){
M x?DD5D0         $mun.= mt_rand(0,9);PHPChina 开源社区门户&x(i M3j@+mcSb+tY;] I
}
U$R4sM8YLlc0
!sX0Z0eo v(d X0 $_SESSION['login_validate'] = $mun;PHPChina 开源社区门户ULz)k8f PGhp
PHPChina 开源社区门户 VW7\}`j#y"x D} R
$img_height=60;    //先定义图片的长、宽
Q7m!N)k#piG0 $img_width=20;PHPChina 开源社区门户!hbz&Lv-?Zh4G

E#l/Q_9\X0 $img = imagecreate($img_height,$img_width);//创建图像
Uv6yZ+r0 ImageColorAllocate($img, 255,255,255);//设置图像背景PHPChina 开源社区门户0a(u"x5|2E"~|#J

3~+}2` ^*ah6I }0 $color_rand = ImageColorAllocate($img, mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
H1O l:W3l.R0 imagestring($img, 5, 12, 2, $_SESSION['login_validate'],$color_rand); //验证数字嵌入图片
2W1C6p"v@ t-~0
(x&m1ZK8d[_W/@0 for($i=0;$i<100;$i++)   //加入干扰象素
l mW oU(V9n0 {PHPChina 开源社区门户0^o4`c7V@9vQ
        imagesetpixel($img, mt_rand(1,$img_height-1), mt_rand(1,$img_width-1), ImageColorAllocate($img, mt_rand(150,250),mt_rand(150,250),mt_rand(100,250)));
&~#Kay[FL;^ F9`a0 }
$h"M6I&xM.c'Jsi0 PHPChina 开源社区门户4|2b6k@yB%u
//画上边框
(Ua'OW;i,`,_;g(hp-O0 ImageRectangle($img,0,0,$img_height-1,$img_width-1,ImageColorAllocate($img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100)));PHPChina 开源社区门户xR6\4I7v1Qi GJ

f#C Z7a ]![`0 Header("Content-type: image/png");    //告诉浏览器,下面的数据是图片,而不要按文字显示
~'d m*Y;A0 //生成png格式
mh$Sn/O0 ImagePNG($img);PHPChina 开源社区门户yY-P%a0Gn5S
ImageDestroy($img);
D u|^!J0 ?>PHPChina 开源社区门户O:OR HUqL
[/php]

相关阅读:

TAG: GD

piaohh的个人空间 piaohh 发布于2007-10-21 10:18:52
看了下~~~不错哦!!!
十五工作室 七月十五 发布于2007-10-21 14:52:10

V/I`'F;DI9uk2uwww.phpchina.com
X)[%o!A uPhp China|php论坛|php教程|php mysql|php源码|php安装|php手册|php学习|zend|Zend中国|PHPChina         不错,简洁高效Php China|php论坛|php教程|php mysql|php源码|php安装|php手册|php学习|zend|Zend中国|PHPChina2q
E/o%{th

9[,S-b:iQuM
[ 本帖最后由 七月十五 于 2007-10-21 14:56 编辑 ]
天堂@PHP学习 排队上天堂 发布于2007-10-21 15:01:01
不错,顶一个!
roha发布于2007-10-21 18:59:40
如果数字的颜色能再变化一下就更好了
每天进步一点点 一条尸体 发布于2007-10-21 19:06:26
显示不出来~~!!!


q.JPG


Lni_wang的PHP技术Blog wangyl 发布于2007-10-21 20:17:53
数字颜色是会变化的!
@gb1I,B        S
tPhp China|php论坛|php教程|php mysql|php源码|php安装|php手册|php学习|zend|Zend中国|PHPChina
$color_rand = ImageColorAllocate($img, mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
$X`/N!EBeXS)}-?www.phpchina.com三个色调都在 1~100之间随机,太高了.颜色会太亮或太淡,用户会看不清是什么数字啊!
roha发布于2007-10-21 20:57:13
我的意思是4个数字分别显示不同的颜色。:)
applejuzi发布于2007-11-23 11:14:17
楼主辛苦了,写的不错,很适合新手。
aphper的个人空间 aphper 发布于2007-11-23 13:01:22
学习!
liumy601发布于2007-11-23 13:44:39
很强啊!!!顶
conanjoe的个人空间 conanjoe 发布于2007-11-23 14:54:12
学习咯
tj646发布于2007-11-23 15:50:34
这样没变型,用PHP一下可以读出图片里的数字了.
liuzhu417发布于2007-12-13 15:26:26
bu cuo  a  ...
lc0633发布于2007-12-13 19:39:19
不错 顶一个
fjj021231发布于2007-12-13 20:09:29
谢谢,学习了.
fjj021231发布于2007-12-13 20:21:21
新手问个问题,我显示也是X啊
U'JK.u'Y[(qwww.phpchina.com怎么回事请教??
fjj021231发布于2007-12-13 20:42:21
借地方发,刚查了下,我是才鸟,
m.VB vtpM5v`!o显示X是因为没加载GD图象格式的库Php China|php论坛|php教程|php mysql|php源码|php安装|php手册|php学习|zend|Zend中国|PHPChina_K0S%U$dbe'Zqo
加载一下要,不好意思~~`
我来说两句

(可选)

数据统计

  • 访问量: 9661
  • 日志数: 51
  • 图片数: 3
  • 书签数: 3
  • 建立时间: 2007-02-07
  • 更新时间: 2008-02-27

RSS订阅

Open Toolbar