php中图片验证码的制作,PHP5制作图片验证码

前言

以前觉得图片验证码很神秘的,但是今天看了看网上的教程,发现并不是很难,PHP5具体实现如下。createphoto.php文件用来生成图片验证码,并通过session向test.php传递验证码内容;而test.php则在表单中引用生成的图片和验证用户的输入。

代码实现(PHP5)

#createphoto.php

#启用session

session_start();

#生成4个随机字符

$ary = 'qwertyuiopasdfghjklzxcvbnm0123456789';

for ($i = 0; $i < 4; $i++) {

$index = rand(0, 35);

$rundstr .= $ary[$index];

}

#把随机数保存到session

$_SESSION[rundstr] = $rundstr;

#图片尺寸

$x_size = 100;

$y_size = 30;

#新建一个真彩×××像

$img = p_w_picpathcreate($x_size, $y_size);

#生成各种颜色

p_w_picpathcolorallocate($img, 230, 230, 230); #设置图片的背景色

$fontcolor = p_w_picpathcolorallocate($img, 0, 0, 0); #生成字体的颜色

$pointcolor = p_w_picpathcolorallocate($img, 0, 0, 0); #生成噪点的颜色

#添加200个噪点

for ($i = 0; $i < 200; $i++) {

p_w_picpathsetpixel($img, rand(0, $x_size), rand(0, $y_size), $pointcolor);

}

//添加5条干扰线

for ($i = 0; $i < 5; $i++) {

$linecolor = p_w_picpathcolorallocate($img, rand(0, 225), rand(0, 225), rand(0, 225)); #生成干扰线的颜色

p_w_picpathline($img, rand(0, 100), 0, rand(0, 100), rand(0, 30), $linecolor);

}

#绘图

p_w_picpathstring($img, 6, rand(0, 30), rand(5, 12), $rundstr, $fontcolor);

//显示图片

header("Content_type:p_w_picpath/jpeg");

p_w_picpathjpeg($img);

?>

#test.php

#启动session

session_start();

#验证

if ($_POST[inputvalue]) {

if ($_POST[inputvalue] == $_SESSION[rundstr]) {

echo "成功";

} else {

echo "失败";

}

}

?>

createphoto.php

运行效果

访问test.php,输入6q94,点击确定;

c1da3b9b8a57dc62d826aae388607d02.png

5b8ba155eae01f3a111b30b1bb45f0fb.png

说明

1、首先要启动gd库,可通过WampServer(PHP -> PHP扩展 -> php_gd2),或修改PHP.ini文件(去掉extension=php_gd2.dll前的";"号);

2、p_w_picpathcreate ( int x_size, int y_size ) // 创建图像,返回图像对象,x就是宽 ,y就是高;

3、p_w_picpathcolorallocate ( resource p_w_picpath, int red, int green, int blue ) // 第一次调用是为图像设置颜色,返回颜色的值;

4、p_w_picpathstring ( resource p_w_picpath, font, int x, int y, 内容 , 颜色 ) // 绘图;

5、rand( int x, int y ) // 生成随机数,范围[x , y]闭区间;

6、p_w_picpathsetpixel ( resource p_w_picpath, int x, int y, int color ) // 画点,xy是点在图像中的坐标;

7、p_w_picpathline ( resource p_w_picpath, int x1, int y1, int x2, int y2, int color ) // 画线,x1y1是起始点坐标,x2y2是终点坐标;

8、header("Content_type:p_w_picpath/jpeg") // 说明文件类型

9、p_w_picpathjpeg($img) // 显示图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值