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

本文实例讲述了PHP 图像处理与SESSION制作超简单验证码的方法。分享给大家供大家参考,具体如下:

验证码的实现

首先我们要清楚,无论是做什么东西,在做之前一定要有思路,譬如这个验证码里他有些什么,为了实现它我们该做些什么,怎么样去做。

这里我例举出几个点。

1.验证码肯定要有内容。
2.验证码里肯定要有干扰信息,就譬如,线条干扰和点点干扰。

那么为了实现他们我们该如何做呢?

第一步,创建一个名为captcha.php的文件

在里面输入

<?php
session_start();//开启会话
header("Content-type:image/png");//定义为图片
$im = imagecreatetruecolor(100,30);//创建一个画布的大小
$color = imagecolorallocate($im, 255, 255, 255);//填充背景颜色
imagefill($im,0,0,$color);//填充$color颜色于$im画板区域从左上角0,0开始
$content = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";//验证码内容
$fontsize = "6";//字体大小
$ragcha = "";//声明一个空变量,接受验证码内容并保存

这个时候,验证码的一些基本东西我们都完成了,定义了验证码的宽高,背景色验证码内容,验证码字体大小,和一个接受验证码的变量,就该做第二步了。

第二步,获取验证码内容

for ($i=0; $i < 4; $i++) {
 //截取字符串
 $char = substr($content,rand(0,strlen($content)-1),1);
 //把得到的内容输入到ragcha里
 $ragcha = $ragcha.$char;
 //设置x轴与y轴的坐标
 $x = $i*(100/4) + rand(5,15);
 $y = rand(5,10);
 //设置验证码内容颜色
 $fontcolor = imagecolorallocate($im,rand(0,120),rand(0,120),rand(0,120));
 //输出
 imagestring($im, $fontsize, $x, $y, $char, $fontcolor);
}
//保证验证码内容不丢失
$_SESSION["ragcha"] = $ragcha;

在这里我们设置了$i的变量不能大于四,然后用他乘以(100/4),保证他的的值不会大过100,再加上rand函数里随机抽取5-15里的数值,使其的x轴坐标范围保证在(5-90)之间,y轴的坐标保证在(5-10)之间,使其大概率的保证了内容显示的范围居中

第三步,设置干扰因素

我们要明白,在验证码里有什么干扰因素,再想办法把它呈现出来。如下

//设置干扰因素
//1.画线条
for ($g=0; $g < 3; $g++) {
 //设置线条颜色
 $line = imagecolorallocate($im, rand(50,100), rand(50,100), rand(50,100));
 //输出线条
 imageline($im,rand(0,99),rand(0,19),rand(0,99),rand(0,19), $line);
}
//2.给背景加点点
for ($r=0; $r < 300; $r++) {
 //设置点点颜色
 $point = imagecolorallocate($im, rand(20,180), rand(20,180), rand(20,180));
 //输出点点
 imagesetpixel($im, rand(0,100), rand(0,30), $point);
}
imagepng($im);//输出整个图片

到这里,我们的验证码功能基本上已经实现的差不多了,内容获取到了,横线和点点等干扰因素也有了。如果需要添加到登录页面可自行发挥。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP图形与图片操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • PHP GD 图像处理组件的常用函数总结

    PHP图像处理组件GD的常用函数总结--概述 PHP有一系列很强大的图形处理函数,他们都统一包含在GD库中,这些函数已经基本满足了一个网络应用的常规图像处理要求,而且使用十分简单. 而我们有好多搞PHP的朋友(包括我)都认为这些函数反正不是很常用,都懒的去研究或者了解这些函数了,而当要面临图像处理方面的事情的时候,又很茫然,书道用时方恨少啊! 本系列这几篇文章就是给大家归纳一下PHP的图像处理函数,不要求掌握,只希望能让各位对这些函数有个大体印象,最起码,有图像处理方面的讨论或者问题的时候,心里

  • PHP图像处理之使用imagecolorallocate()函数设置颜色例子

    在是使用PHP动态输出美丽图像的同时,也离不开颜色的设置,就像画画时需要使用调色板一样.设置图像的颜色,需要调用imagecolorallocate()函数完成.如果在图像中需要设置多种颜色,只要多次调用该函数即可.该函数的原型如下所示: 复制代码 代码如下: int imagecolorallocate(resource $image,int $red,int $green,int $blue)                //为一幅图分配颜色 该函数会返回一个标识符,代表了由给定的RGB成

  • 一个漂亮的php验证码类(分享)

    直接上代码: 复制代码 代码如下: //验证码类class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子 private $code;//验证码 private $codelen = 4;//验证码长度 private $width = 130;//宽度 private $height = 50;//高度 private $img;//图形资源句柄 pri

  • php发送短信验证码完成注册功能

    短信验证码注册,很简单,用的是  云通讯的短信系统(收费的,不过有测试的api给我们做测试).好了,不多说,进入正题. 1.收到到云通讯短信系统注册账号,然后下载他们的封装好的短信api接口代码,解压,然后找到CCPRestSDK.php文件和SendTemplateSMS.php文件,将其拉到根目录文件夹里. 2.打开SendTemplateSMS.php文件,首先注意include_once('./CCPRestSDK.php'),千万别包含错路径了,将云通讯给的测试主账号,主账号Token

  • PHP基于GD库的图像处理方法小结

    本文实例讲述了PHP基于GD库的图像处理方法.分享给大家供大家参考,具体如下: gd图像处理技术 extension=php_gd2.dll 创建画布 画布,一种资源型数据,可操作的图像资源 创建画布(新建) imageCreate(width,height) //创建基于调色板的画布 imageCreateTrueColor(width,height) //创建真彩色的画布 基于图片创建画布(打开) imageCreateFromJPEG( url) imageCreateFromPNG(ur

  • php图像处理函数imagecopyresampled用法详解

    本文实例讲述了php图像处理函数imagecopyresampled用法.分享给大家供大家参考,具体如下: 语法 复制代码 代码如下: bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h ) 参数 dst_i

  • PHP生成图片验证码、点击切换实例

    这里来看下效果: 现在让我们来看下 PHP 代码 复制代码 代码如下: <?php   session_start(); function random($len) {     $srcstr = "1a2s3d4f5g6hj8k9qwertyupzxcvbnm";     mt_srand();     $strs = "";     for ($i = 0; $i < $len; $i++) {         $strs .= $srcstr[mt

  • php生成图片验证码-附五种验证码

    以前输出验证码的时候用过一个方法,在前台用JS生成验证码字符串,再传递到后台用PHP输出验证码图像.这样在验证时就不需要使用$_SESSION传递验证码的值,直接用JS比较生成的字符串和输入的字符串是否相等即可. 本文以实例演示5种验证码,并介绍生成验证码的函数.PHP生成验证码的原理:通过GD库,生成一张带验证码的图片,并将验证码保存在Session中. 1.HTML 5中验证码HTML代码如下: <div class="demo"> <h3>1.数字验证码&

  • PHP+jQuery 注册模块的改进(一):验证码存入SESSION

    需要修改的几个文件: ①register.php 生成随机数和加密值 把register.html改为register.php,并开启session: 把register.js中生成随机数的函数写在register.php中,并改用php方法 <?php session_start();?> .... <?php //生成随机数函数 function showval(){ $num = ""; for($i=0;$i<4;$i++){ $tmp = rand(1

  • PHP 用session与gd库实现简单验证码生成与验证的类方法

    验证码是为了防止机器灌水给网站带来污染以及增加服务器负担而出现的.目前大大小小的网站都有验证码.今天自己实现了一个简单的验证码类.说简单是因为没有加一些干扰的弧线等等,只是将文字旋转了一下.当然,因为字体的原因,要想一眼看出来并不容易.同时,为了避免字母的大小写与数字混淆,又去掉了那些看起来很像的字母数字. 类: <?php /** *简单生成验证码类 */ class Captcha { private $width;//验证码宽度 private $height;//验证码高度 privat

  • PHP图像处理类库MagickWand用法实例分析

    本文实例讲述了PHP图像处理类库MagickWand用法.分享给大家供大家参考.具体分析如下: MagickWand 是PHP的一个扩展程序,通过它建立起与ImageMagick的交互,进行图片的处理.它是默认的GD图象函数库的绝佳替代方案.从安全性和易用性来说,在PHP中使用MagickWand比使用命令行ImageMagick要安全快捷的多.另外 imagick也可用于PHP中作为ImageMagick的替代方案. MagickWand 有两种形式, 只是建立与ImageMagick的交互,

  • php图像处理函数大全(推荐收藏)

    一.创建图片资源imagecreatetruecolor(width,height);imagecreatefromgif(图片名称);imagecreatefrompng(图片名称);imagecreatefromjpeg(图片名称);画出各种图像 imagegif(图片资源,保存路径);imagepng()imagejpeg(); 二.获取图片属性imagesx(res//宽度imagesy(res//高度getimagesize(文件路径)返回一个具有四个单元的数组.索引 0 包含图像宽度

随机推荐