`
王之子
  • 浏览: 105618 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PHP 5 中图片验证码的制作

阅读更多

一、应用场景

    在 WEB 网站中,图片验证码经常被用来防止恶意地用户注册、发帖等场景。在 PHP 中,图片验证码主要是通过 GD 库提供的 API 来完成的。

 

二、实现的方法

    验证码一般都是随机的数字和字母组合的,可以通过随机函数,十六进制函数 dechex 简单实现。最关键的问题还是怎样生成图片。

 

<?php
//生成随机数-》创建图片-》随机数写进图片 -》输出到浏览器

for($i=0;$i<4;$i++) {
  $rand .= dechex(rand(1,15));
}
  
$im = imagecreatetruecolor(100,30);// 新建一个真彩色图像  x就是宽 ,y就是高

//设置颜色

// 为一幅图像分配颜色(相当于 PhotoShop 的调色板)

// imagecolorallocate ( resource image, int red, int green, int blue )  返回一个标识符,代表了由给定的 RGB 成分组成的颜色。

$bg = imagecolorallocate($im,0,0,0);//第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色。代表了由给定的 RGB 成分组成的颜色
  
$te = imagecolorallocate($im,225,225,225);


//把字符串写在图像左上角

//绘图函数  imagestring ( resource image, font, int x, int y, string s, int col ) 

//用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。  

imagestring($im,5,rand(3,70),rand(0,16),$rand,$te);

//直接输出图像到浏览器
header("Content-type: image/jpeg");

// imagejpeg ( resource image [, string filename [, int quality]] )  filename 参数为可选,如果省略,则原始图像流将被直接输出。要省略 filename 参数而提供 quality 参数,使用空字符串('')。通过 header() 发送 Content-type: image/jpeg 可以使 PHP 脚本直接输出 JPEG 图像。

imagejpeg($im);
?>​

 

三、制作复杂的图片验证码

     有时验证码为了防止被一些图片识别工具识别,必须设置一些干扰。例如在图片上随机加上一些线条或者点。这主要通过 imageline() 和 imagesetpixel() 函数来实现。甚至制作中文验证码。

 

<?php

for($i=0;$i<4;$i++) {
  $rand .= dechex(rand(1,15));
}
  
$im = imagecreatetruecolor(100,30);

$bg = imagecolorallocate($im,0,0,0);
  
$te = imagecolorallocate($im,225,225,225);

//画线条
for($i=0; $i<3; $i++){
  $te2 = imagecolorallocate($im,rand(0,225),rand(0,225),rand(0,225));
//imageline ( resource image, int x1, int y1, int x2, int y2, int color )  用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条线段。 
  imageline($im,rand(0,100),0,rand(0,100),rand(0,30),$te2);
}
//画点
for($i = 0; $i < 100; $i++){
  //imagesetpixel ( resource image, int x, int y, int color ) 在 image 图像中用 color 颜色在 x,y 坐标(图像左上角为 0,0)上画一个点。 
  imagesetpixel($im,rand()%100,rand()%30,$te2);
}
  
$str = iconv("gbk","UTF-8","验证码");//把gbk编码转换成UTF-8,如果文件的编码是 UTF-8,则不需要这一步。因为我们的系统(Windows)自带的字体默认是用国际通用编码(UTF-8)模式来识别的,所以如果不做编码转换,可能无法正常显示。
imagettftext($im,12,rand(0,10),20,20,$te,'msyh.ttf',$str);//rand(3,10)倾斜度。msyh.ttf 是微软雅黑字体,可在 C:\Windows\Fonts (Windows XP、Windows 7)找到。然后拷贝到该文件的目录。Windows 下之所以能够显示中文,是因为系统安装了中文字体

header("Content-type: image/jpeg");

imagejpeg($im);
?>​

 

原文链接:http://woqilin.blogspot.com/2012/10/php-5.html

分享到:
评论

相关推荐

    PHP100视频教程33:PHP5中图片验证码的制作(上).rar

    PHP100视频教程33:PHP5中图片验证码的制作(上).rar

    php图片验证码制作教程

    关于php的验证码制作ppt,可做教学用

    PHP实现图片验证码制作

    PHP实现图片验证码制作 一、开发环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 本实验主要使用while循环、GD库和函数的封装和调用实现迷宫的...

    PHP100视频教程 33:PHP5中图片验证码的制作(上)

     2、部分GD库函数的介绍 imagecreatetruecolor 新建一个真彩色图像 imagecolorallocate 为一幅图像分配颜色(调色板) imagestring 绘图函数3、学习:随机函数,十六进制函数4、GD+SESSION制作PHP验证码 生成...

    实现基于PHP制作验证码

    本案例主要基于PHP中的GD库来实现验证码的制作。 GD(graphic device)库是PHP处理图形的扩展库,GD库提供了一系列用来处理图片的api,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者...

    msyh.zip(msyh.ttf)(12(PHP图像的制作,例如验证码)配套一字体)

    12(PHP图像的制作,例如验证码)配套一字体

    验证码图片水印

    验证码制作,包括加点划线,中文验证码,图片剪切,图片水印等 验证码制作,包括加点划线,中文验证码,图片剪切,图片水印等

    php压缩图片,添加水印,制作验证码等

    很全面,很强大的php操作图片类,所有功能都有,附带demo案例

    PHP图片验证码制作实现分享(全)

    最近正在学习php入门,现在刚入门,所以许多都不知道,就从最基础的学起,不会的上网查,然后把它记在这个法宝内

    php的不同风格的验证码

    3种不同风格的php制作的验证码,已经整理好,用于登陆验证等

    PHP100视频教程全集112集BT种子【PHP经典】

    PHP100视频教程33:PHP5中图片验证码的制作(上) PHP100视频教程34:PHP5中图片中文验证码(下) PHP100视频教程35:PHP5文字图片混合水印与缩略图 PHP100视频教程36:PHP中正则表达式学习及应用(一) PHP100...

    php验证码的制作思路和实现方法

    由于注册的时候常常会用到注册码来防止机器恶意注册,这里我发表一个产生png图片验证码的基本图像,简单的思路分析: 1、产生一张png的图片 2、为图片设置背景色 3、设置字体颜色和样式 4、产生4位数的随机的验证码...

    在线生成图片 源码 含教程 详细注释 PSD分层文件

    选取一张图片作为模板,利用SAE中PHP的GD库,画出前台用户提交的内容,返回给前台浏览器进行展示。 GD库是php处理图形的扩展库,GD库提供了一系列用来处理图片的API,使用GD库可以创建图片、处理图片。在网站上GD库...

    validpic.zip_验证码 学习

    256色BMP图片验证码识别脚本,php编程学习源码,web网页制作参考资料。

    php课程(共100多节)

    33:PHP5中图片验证码的制作(上) 34:PHP5中图片中文验证码(下) 35:PHP5文字图片混合水印与缩略图 36:PHP中正则表达式学习及应用(一) 37:PHP中正则表达式学习及应用(二) 38:PHP中正则表达式学习及应用...

    PHP 图像处理与SESSION制作超简单验证码的方法示例

    本文实例讲述了PHP 图像处理与SESSION制作超简单验证码的方法。分享给大家供大家参考,具体如下: 验证码的实现 首先我们要清楚,无论是做什么东西,在做之前一定要有思路,譬如这个验证码里他有些什么,为了实现它...

    php制作的简单验证码识别代码

    在CAPTCHA测试中,作为服务器的计算机会自动生成一个问题由用户来解答。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。 ...

    php 验证码制作(网树注释思想)

    2,创建图片 用图片创建函数确定,所创建的图片大小。 例如$im = imagecreatetruecolor(100,30);其中坐标100,30是以网页左上角为原点,$im为图片变量了。 3,设置颜色 使用函数 创建背景色。例如$bg = ...

    PHP连接数据库 基础封装快速构建简易web项目

    PHP无框架,原生傻瓜式制作简易Api接口, 封装MySQL增删改查,图片上传,图形验证码生成,token验证,json统一返回格式。 项目地址:https://gitee.com/abmo2o/php-api-demo 此文件和使用方法仅适用于入门级在校大...

    PHP_Captcha:PHP简单的cpatcha制造商

    这是一个用php编写的非常非常简单的验证码制作器!这个怎么运作? 这将使用随机 Captcha 字符串随机制作一张 png 图片,并将验证码值存储在 SESSION 变量中,并使用输入的验证码检查用户输入的验证码 SESSION VALUE...

Global site tag (gtag.js) - Google Analytics