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

就如今天遇到随即函数rand();脑海中想到用它做点啥好呢,最后想起了验证码,数字验证码,字母验证码,中文验证码,可是自己不会呀,咋办呢,上网搜,看别人的代码,开不懂,看视频,听老师讲,将其中所遇到的函数,值得注意的地方都拿笔记下,平常看到一般网页上的随机验证码都是以一定的方框包围起来,貌似就是以图片为背景的。经过边看,自己边敲,虽然遇到很多不会的问题,但是我相信只要自己脚踏实地,一定学会的。现在想做一下总结,自己可能写的很乱,可我相信有一天会实现的。1.产生数字的随机数 ——》创建图片——》随机数写进图片——》在图片加入干扰值(点,线)——》保持在session中——》在form表单中引用;随机函数:rand(int min,int max);万变不离其宗,我看了网上许多中生成随机数的代码,有数字和字母随机数,中文随机数(数组)等等;都离不开rand();代码如下(有的上网copy,希望各位不要见怪啊第一种:


代码如下:

$authnum='';
$ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
$list=explode(",",$ychar);//分割函数
for($i=0;$i<4;$i++){
$randnum=rand(0,35);
$authnum.=$list[$randnum];//以数组的形式输出

第二种:


代码如下:

private function createCheckCode()
{
for(i=0;i<this->codeNum;i++)
{
number = rand(0,2);
switch(number)
{
case 0: rand_number = rand(48,57); break;//数字
case 1: rand_number = rand(65,90);break;//大写字母
case 2: rand_number = rand(97,122);break;//小写字母
}
$asc = sprintf("%c",rand_number);
$asc_number = asc_number.asc;
}
return asc_number;
}

第三种:


代码如下:

srand(microtime()*100000);//相当于计时器
$string="abcdefghigklmnopqrstuvwxyz123456789";
for($i=0;$i<4;$i++)
{
$new_number.=$string[rand(0,strlen($string)-1)];//随即的产生一个数组
}

第四种:


代码如下:

for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(1,15));//将十进制转化为十六进制
}

GD库:(提供了一系列图片处理函数的IPI,生成图片处理图片)
启用php中GD库:php.ini配置文件中,去掉";extension=php_gd2.dll"中“;”;
部分GD库函数的介绍:1.imagecreatetruecolor(int x_size,int Y_size) 新建真彩色图像
2.imagecolorallocate(resource image,int red,int green,int blue) 为一幅图像分配颜色,三原色
3.imagestring(resource,font,int x,int y,content,color)绘图函数4.header("Content-type:image/jpeg") 输出函数php的header是定义头的动作,php5中支持3中类型: 1,Content-type:xxxx/yyyy 2,Location:xxxx:yyyy/zzzz 3,Status:nnn xxxxxx xxxx/yyyy表示内容文件的类型 如:image/gif image/jpeg image/png imagejpeg(),imagegif(),imagepang() 5.iamgeline(resource image,int x1,int y1,int x2,int y2,int color); 画线函数,(int x,int y)起始坐标6.imagesetpixel(resource image,int x,int y,int color) 画点函数7.imagettftext(resource image,float size,float angle,int x,int y,int color,string fontfile,string text) 带字体写入函数8.iconv("gb2312","utf-8","字符串"); //首先要将文字转换成utf-8格式 php验证码插入中文的方法。

随机生成数字,字母的代码:

代码如下:

<?php
//che.php
session_start();
for($i=0;$i<4;$i++)
{
$rand.=dechex(rand(1,15));
}
$_SESSION['check_num']=$rand;
$image=imagecreatetruecolor(50,30);
$bg=imagecolorallocate($im,0,0,0);//第一次用调色板的时候,背景颜色
$te=imagecolorallocate($im,255,255,255);
imagestring($image,6,rand(0,20),rand(0,2),$rand,$te);
ob_clean();//PHP网页中因为 要生成验证码而出现 图像"http://localhost/**.php"因其本身有错无法显示
header("Content-type:image/jpeg"); imagejpeg($image);
?>

给图片画出干扰线代码:


代码如下:

for($i=0;$i<8;$i++)//画出多条线
{
$cg=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//产生随机的颜色
imageline($im,rand(10,40),0,rand(10,40),20,$cg);
}

给图片画出干扰点的代码:


代码如下:

for($i=0;$i<80;$i++)//画出多个点
{
imagesetpixel($im,rand(0,40),rand(0,20),$cg);
}

把文字写入图片代码:


代码如下:

$str=array('我','我','亲','亲');//存储显示的汉字
for($i=0;$i<4;$i++)
{
$sss.=$str[rand(0,3)];//随机显示汉字
}

//$str=iconv("gb2312","utf-8",$str); //汉字编码转化,我的好像不需要
imagettftext($im,10,0,rand(5,60),rand(5,60),$te,"simhei.ttf",$sss);//

0:字体的倾斜度,“simhei.ttf”:字体样式,一般放在根目录下;

(0)

相关推荐

  • PHP制作图形验证码代码分享

    效果: myvcode.class.php:封装创建验证码的类 <?php/** file:myvcode.class.php* 验证码类,类名Vcode*/class Vcode{private $width;              /*验证码宽度*/private $height;             /*验证码高度*/private $codeNum;            /*验证码字符个数*/private $checkCode;            /*验证码字符*/pri

  • 使用开源工具制作网页验证码的方法

    开发工具:eclipse.kaptcha-2.3.jar包. 一.创建Web项目: 二.新建一个Jsp页面(内容有,一个文本框,一个图片容器,一个提交按钮) <body> <img alt="random" src="randomcode.jpg" onclick="changeR(this)" style="cursor: pointer;"> <form action="check.

  • asp.net 验证码的简单制作(vb.net+C#)

    网站上验证码效果一般制作方法是: 1)使用HttpHandler(一般处理程序)绘制随机验证码的图,以及产生随机码,并输出到页面的OutputStream中. 2)页面中使用异步方式(js等)进行刷新当前页面的验证码. [示例] 1)创建一个"一般应用处理程序ashx",代码如下: [C#] 复制代码 代码如下: public class ValidationCode : IHttpHandler { //随机发生器 static Random r = new Random(Guid.

  • php制作动态随机验证码

    验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers and Humans Apart"(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序.可以防止:恶意破解密码.刷票.论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能. 这个问题可以由计算机生成

  • PHP+javascript制作带提示的验证码源码分享

    html代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equi

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

    一直想写这个,过了很久今天兴趣来了索性记录下. 验证码 全自动区分计算机和人类的公开图灵测试(英语:Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA),俗称验证码,是一种区分用户是计算机和人的公共全自动程序.在CAPTCHA测试中,作为服务器的计算机会自动生成一个问题由用户来解答.这个问题可以由计算机生成并评判,但是必须只有人类才能解答.由于计算机无法解答CAPTCHA的问题,

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

    就如今天遇到随即函数rand();脑海中想到用它做点啥好呢,最后想起了验证码,数字验证码,字母验证码,中文验证码,可是自己不会呀,咋办呢,上网搜,看别人的代码,开不懂,看视频,听老师讲,将其中所遇到的函数,值得注意的地方都拿笔记下,平常看到一般网页上的随机验证码都是以一定的方框包围起来,貌似就是以图片为背景的.经过边看,自己边敲,虽然遇到很多不会的问题,但是我相信只要自己脚踏实地,一定学会的.现在想做一下总结,自己可能写的很乱,可我相信有一天会实现的.1.产生数字的随机数 -->创建图片-->

  • java图片验证码实现示例分享

    复制代码 代码如下: package com.sanrong;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random; import javax.imageio.ImageIO;import

  • PHP编写的图片验证码类文件分享

    适用于自定义的验证码类! <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ Class Image{ private $img; public $width = 85; pub

  • 随机图片生成器制作方法分享

    复制代码 代码如下: /// <summary>    /// PicHandler1 的摘要说明    /// </summary>    public class PicHandler1 : IHttpHandler, IRequiresSessionState    {        private string mCheckNo = string.Empty;        protected ImgBuilder _ImgBuilder = new ImgBuilder(

  • python中使用PIL制作并验证图片验证码

    验证码制作 #string模块自带数字.字母.特殊字符变量集合,不需要我们手写集合 import string import random import os import uuid import settings from PIL import Image, ImageDraw, ImageColor, ImageFilter, ImageFont class Code(object): # 生成随机生成数字或字母 def random_hexdigits(self, len=1): retu

  • python 图片验证码代码分享

    复制代码 代码如下: #coding: utf-8 import Image,ImageDraw,ImageFont,os,string,random,ImageFilter def initChars(): """ 允许的字符集合,初始集合为数字.大小写字母 usage: initChars() param: None return: list 返回允许的字符集和 for: picChecker类初始字符集合 todo: Nothing """

  • Java实现图片验证码具体代码

    本文实例为大家分享了Java图片验证码代码,供大家参考,具体内容如下 网页显示效果: index.jsp 使用两种方式强制图片更新: 1.设置图片输出时不缓存. 2.用js改变请求的地址. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <title>第一个web项目的主页</

  • java web中图片验证码功能的简单实现方法

    用户在注册网站信息的时候基本上都要数据验证码验证.那么图片验证码功能该如何实现呢? 大概步骤是: 1.在内存中创建缓存图片 2.设置背景色 3.画边框 4.写字母 5.绘制干扰信息 6.图片输出 废话不多说,直接上代码 package com.lsgjzhuwei.servlet.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.Buffer

  • Java版仿QQ验证码风格图片验证码

    本文为大家分享了Java版仿QQ验证码风格图片验证码,具体内容如下 功能包括:自定义图片尺寸和字符长度,随机背景颜色和字符颜色,随机字符偏移角度,字符平滑边缘,干扰线,噪点,背景扭曲. 本来想做字符扭曲的,不知道怎的先生成文字再扭曲就报错了,先就这样吧,希望有高手能帮助修正一下. 需要说明的是之所以有几分像QQ的验证码感觉是因为这个Algerian字体,如果系统没有的话需要自行安装,百度搜字体名能下载到,丢系统Fonts文件夹就行. 效果图: package hh.com.util; impor

  • 探讨Java验证码制作(下篇)

    接着上篇java验证码制作(上篇)给大家介绍有关java验证码的相关知识! 方法三: 用开源组件Jcaptcha实现,与Spring组合使用可产生多种形式的验证码,JCaptcha 即为Java版本的 CAPTCHA 项目,其是一个开源项目,支持生成图形和声音版的验证码,在生成声音版的验证码时,需要使用到 FreeTTS.而CAPTCHA 全称 Completely Automated Public Turing Test to Tell Computers and Humans Apart,最

随机推荐