创建验证码(上)

一、创建验证码函数

    验证码函数输入通用函数,将函数放入global.func.php里

    //创建一个四位数的字母数字混合随机码

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

      $_nmsg .= dechex(mt_rand(0,9));

    }

    //将验证码保存到session里

    $SESSION[‘code‘]=$_nmsg;

    //设定验证码图片的长度和宽度

    $_width=75;

    $_height=25;

    //创建图片

    $_img = imagecreatetruecolor($_width,$_height);

    //创建一个白色

    $_white = imagecolorallocate($_img,255,255,255);

    //填充背景

    $imagefill($_img,0,0,$_white);

    //创建一个黑色的边框

    $_blach = imagecolorallocate($_img,100,100,100);

    imagerectangle($_img,0,0,$_width-1,$height-1,$_black);

    //添加随机线条

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

      //创建随机色

      $_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));

      imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height),$_rnd_color);

    }

    //添加随机雪花........数值越大,颜色越淡

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

      imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),"*",imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)))

    }

    //输出验证码

    for($i=0;$i<strlen($_SESSION[‘code‘]),$i++){

      //各参数意义imagestring(句柄,颜色,平分四等分x轴方向,随机y轴方向位置,打印的字符,设置颜色)

      imagestring($_img,mt_rand(3,5),$i*$_width/4+mt_rand(1,10),

      mt_rand(1,$_height/2),$_SESSION[‘code‘][‘$i‘],

     imagecolorallocate($_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));  

    }

    //输出验证码

    header("Content-Type:image/png");

    imagepng($_img);

    //输出销毁

    imagedestroy($_img);

二、使用到的函数(图像处理函数)

   1.dechex():  十进制转换为二进制;

   2.rand(min,max)与mt_rand(min,max): 返回min到max之间的随机整数;

       区别:mt_rand() 产生随机数值的平均速度比rand() 快四倍;

   3.imagecreatetruecolor()和imagecreate():

       区别

          用imagecreatetruecolor(int x,int y)建立的是一幅大小为 x和 y的黑色图像(默认为黑色),

          如想改变背景颜色则需要用填充颜色函数imagefill($img,0,0,$color),

          imagecreate() 新建一个空白图像资源,用imagecolorallocate()添加背景色

       这两个函数只不过是一个功能的两种方法

         具体用法见以下两种方法:

<?php
    $img = imagecreatetruecolor(100,100);    //创建真彩图像资源
    $color = imagecolorAllocate($img,200,200,200);   //分配一个灰色
    imagefill($img,0,0,$color);                 // 从左上角开始填充灰色
    header(‘content-type:image/jpeg‘);   //jpg格式
    imagejpeg($img);                              //显示灰色的方块
?>
<?php
    $img = imagecreate(100,100);
    $color = imagecolorallocate($img,200,200,200);
    header(‘content-type:image/jpeg‘);   //jpg格式
    imagejpeg($img);                              //显示灰色的方块
?>

   4.imagecolorallocate(resource $image , int $red , int $green , int $blue )—— 为一幅图像分配颜色

      imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。

   5.imagerectangle( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color ) —— 画一个矩形

      imagerectangle() 用 col 颜色在 image 图像中画一个矩形,其左上角坐标为 x1, y1,右下角坐标为 x2, y2。

   6.imageline(resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color) ——画一条线段

      imageline() 用 color 颜色在图像 image 中从坐标 x1y1 到 x2y2(图像左上角为 0, 0)画一条线段。

   7.imagestring(resource $image , int $font , int $x , int $y , string $s , int $color) —— 水平地画一行字符串

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

      

时间: 2024-10-12 23:33:13

创建验证码(上)的相关文章

创建验证码

第一步:在Common层创建一个类ValidateCode public class ValidateCode { public ValidateCode() { } /// <summary> /// 验证码的最大长度 /// </summary> public int MaxLength { get { return 10; } } /// <summary> /// 验证码的最小长度 /// </summary> public int MinLengt

创建 Android 上使用的自签名证书(Creating self-signed certificates for use on Android)

创建 Android 上使用的自签名证书 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 创建 Android 上使用的自签名证书 Creating self-signed certificat

.Net常用技巧_C#创建验证码

/// <summary> /// 创建验证码 /// </summary> /// <returns></returns> private string GenerateCheckCode() { int number; char code; string checkCode = String.Empty; System.Random random = new Random(); for (int i = 0; i < 4; i++) { numbe

代码操作Sharepoint文档库(创建、上传附件)

代码操作Sharepoint文档库(创建.上传附件) 做项目中遇到客户需求,根据Infopath表单生成Excel并上传到Sharepoint指定文档库中 创建文档库 SPSite site = new SPSite(siteurl); SPListItem item = site.AllWebs["网站名"].Lists["列表名"].Folders.Add("文档库URL", SPFileSystemObjectType.Folder); i

Docker镜像的创建及上传

Docker镜像的创建及上传 Docker镜像介绍 Docker镜像除了是Docker的核心技术之外也是应用发布的标准格式.一个完整的Docker镜像可以支撑一个Docker容器的运行,在Docker的整个使用过程中,进入一个已经定型的容器之后,就可以在容器中,进行操作,最常见的操作就是在容器中安装应用,如果要把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像. 创建镜像的方法有三种,分别是基于已有镜像.基于本地模版以及基于Dockerfile创建. 基于已有镜像创建 基于已有的镜

js创建验证码

<script> window.onload=function(){ var code=document.getElementById("code"); var code_text=''; createCode(); code.onclick=function(){ createCode(); } function createCode(){//创建验证码 code_text=""; var datas=['Q','W','E','R','T','Y',

概率生成模型在验证码上的成果论文解读

摘要从少数样本学习并泛化至截然不同的情况是人类视觉智能所拥有的能力,这种能力尚未被先进的机器学习模型所学习到.通过系统神经科学的启示,我们引入了视觉的概率生成模型,其中基于消息传送(message-passing)的推断以统一的方式处理识别.分割和推理(Reasoning).该模型表现出优秀的泛化和遮挡推理(occlusion-reasoning)能力,并在困难的场景文字识别基准任务上优于深度神经网络,且更具有 300 倍的数据效率(data efficient)优势.此外,该模型基本上打破了现

创建 验证码

1.java代码 1 import java.awt.Color; 2 import java.awt.Font; 3 import java.awt.Graphics; 4 import java.awt.image.BufferedImage; 5 import java.io.IOException; 6 import java.util.Random; 7 import javax.imageio.ImageIO; 8 import javax.servlet.ServletExcept

Java实现验证码(上)

总所周知,现在登录注册各种网站账号很多都要求输入验证码.设置验证码,毫无疑问降低了用户体验,但为什么各种网站还仍然使用验证码呢? 很明显,验证码有其特殊的作用:验证码是一种区分用户是计算机还是人的公共全自动程序.它能够防止恶意破解密码.刷票.论坛灌水.刷页等.想想看,如果没有验证码,每次登录网站只需用户名和密码,这时,一些心术不正的黑客可以利用暴力穷举的方法破解密码,而且,黑客们还可以不断刷新访问同一个网站,使其负担加重,严重时能够导致网站崩溃.所以设置验证码就成了必要了. 废话不多说,我将在这