一、应用场景
在 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
相关推荐
【PHP5图片验证码制作详解】 验证码是Web应用中防止机器人自动操作的重要手段,它通过生成一组随机字符并将其显示在图像上,用户需要输入所见的字符才能完成验证。在PHP5中,我们可以利用GD库或者ImageMagick库来...
关于php的验证码制作ppt,可做教学用
PHP实现图片验证码制作 一、开发环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 本实验主要使用while循环、GD库和函数的封装和调用实现迷宫的...
2、部分GD库函数的介绍 imagecreatetruecolor 新建一个真彩色图像 imagecolorallocate 为一幅图像分配颜色(调色板) imagestring 绘图函数3、学习:随机函数,十六进制函数4、GD+SESSION制作PHP验证码 生成...
验证码(CAPTCHA)是一种用于验证用户身份的人工智能技术,主要目的是防止自动化程序(如...在提供的压缩包文件中,包含的"图片验证码"可能就是实现了上述原理的一种具体示例,你可以参考其源码进一步学习和实践。
这个字体文件是专为PHP图像制作设计的,特别是在创建验证码时可能会用到。验证码是一种用于验证用户是否为真实人类的机制,常用于防止自动化的机器人程序进行恶意操作,如批量注册、垃圾评论等。 在PHP中生成图像...
本案例主要基于PHP中的GD库来实现验证码的制作。 GD(graphic device)库是PHP处理图形的扩展库,GD库提供了一系列用来处理图片的api,使用GD库可以处理图片,或者生成图片。 在网站上GD库通常用来生成缩略图或者...
本例中,我们主要使用 PHP 中的 GD 库来实现验证码的制作。GD 库是 PHP 处理图形的扩展库,提供了一系列用来处理图片的 API,使用 GD 库可以处理图片,或者生成图片。在网站上 GD 库通常用来生成缩略图、或者用来对...
在PHP编程中,处理图像是一项常见的任务,包括压缩图片、添加水印以及制作验证码等。这些功能对于网站的性能优化、品牌保护以及用户安全都至关重要。以下是对这些知识点的详细说明: 1. **PHP 图像处理库**: PHP ...
- **客户端显示**:如何在网页上正确显示验证码图片,并提供刷新验证码的选项。 - **验证过程**:用户输入后,服务器如何验证输入的验证码是否正确,以及错误处理机制。 - **安全注意事项**:如何避免常见的...
这些图片可以是随机生成的数字、字母组合,或者是复杂背景下的可识别对象,用于制作验证码图像。 3. **图片处理**: - 在生成验证码时,服务器会从图像库中随机选择一张图片,然后将图片的某一部分遮挡(通常通过...
验证码制作,包括加点划线,中文验证码,图片剪切,图片水印等 验证码制作,包括加点划线,中文验证码,图片剪切,图片水印等
标题中提到的“PHP生成制作验证码代码详解”指的是利用PHP语言编写代码来实现验证码图像的生成。验证码(CAPTCHA)是一种防止自动化工具进行恶意操作的安全功能,常见于登录、注册、评论等页面中。验证码图像一般...
最近正在学习php入门,现在刚入门,所以许多都不知道,就从最基础的学起,不会的上网查,然后把它记在这个法宝内
本文将深入探讨如何使用PHP将文字转化为图片,这在验证码生成、动态标语制作或者自定义图形报告等领域都有广泛的应用。 首先,我们来看标题提到的"PHP把文字生成图片的简单例子"。这个例子的核心是利用PHP的GD库或...
5. 应用实践:文件中还提到了在线图片转换工具、图标在线生成工具、邮箱图标制作工具及在线图片格式转换工具等,这些建议的第三方服务可以辅助开发者在实际项目中处理和优化图片资源。 6. PHP学习资源推荐:示例...
PHP100视频教程33:PHP5中图片验证码的制作(上) PHP100视频教程34:PHP5中图片中文验证码(下) PHP100视频教程35:PHP5文字图片混合水印与缩略图 PHP100视频教程36:PHP中正则表达式学习及应用(一) PHP100...
8. 输出和文件类型:为了将生成的验证码以图片形式输出,实例中使用了header()函数来设置正确的响应类型,并调用imagepng()函数将图像数据输出到浏览器。 以上便是php封装的验证码工具类中的主要知识点,这些知识点...
由于注册的时候常常会用到注册码来防止机器恶意注册,这里我发表一个产生png图片验证码的基本图像,简单的思路分析: 1、产生一张png的图片 2、为图片设置背景色 3、设置字体颜色和样式 4、产生4位数的随机的验证码...