热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP图片验证码制作(上)

最近正在学习php入门,现在刚入门,所以许多都不知道,就从最基础的学起,不会的上网查,然后把它记在这个法宝内,就如今天遇到随即函数rand();脑海中想到用它做点啥好呢,最后想起了验证码,数字验证码,字母验...SyntaxHighlighter.all();

最近正在学习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;icodeNum;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") 输出函数 www.2cto.com
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验证码制作(下)

 

 

摘自 ms.元


推荐阅读
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文介绍了如何在C#应用程序中有效隐藏SQLCMD命令行窗口,确保程序运行时不会弹出黑色命令提示符窗口。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • Windows 环境下重启 MySQL 服务的方法
    本文详细介绍了在 Windows 操作系统中如何正确地重启 MySQL 数据库服务,包括常见的权限问题及其解决方案。 ... [详细]
  • 降噪耳机与普通耳机的差异解析
    对于不太了解耳机分类的朋友来说,区分降噪耳机和普通耳机可能有些困难。本文将详细对比这两类耳机在降噪技术、效果及佩戴舒适度等方面的差异,并提供选择建议。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了 iBatis.NET 中的 Iterate 元素,它用于遍历集合并重复生成每个项目的主体内容。通过该元素,可以实现类似于 foreach 的功能,尽管 iBatis.NET 并未直接提供 foreach 标签。 ... [详细]
  • 蒟蒻林荫小复习——莫比乌斯反演
    莫比乌斯反演积性函数:对于函数f,如果有质数p,q,使得f(p)f(q)f(pq),则函数f为积性函数设积性函数f,有和函数 显然,F由f决定,这种关系是否可以反过来?  F(1) ... [详细]
  • DedeCMS栏目列表调用中currentstyle中也支持autoindex的方法
    在《DedeCMS自增函数autoindexitemindex用法全解析》中,余斗给大家详细说明了DedeCMS中的autoindex和itemindex的日常用法,而我们在DedeCMS建站过程中,调用顶级栏目之类的会用到currentstyle属性,来实现当 ... [详细]
  • JavaScript 中创建对象的多种方式
    本文介绍了 JavaScript 中创建对象的几种常见方法,包括字面量形式、构造函数、原型对象等。每种方法都有其特点和适用场景,通过对比分析,帮助开发者选择最适合的方式。 ... [详细]
  • 随着Redis功能的不断增强和稳定性提升,其应用范围日益广泛,成为软件开发人员不可或缺的技能之一。本文将深入探讨Redis集群的部署与优化,包括主从备份机制、哨兵模式以及集群功能,帮助读者全面理解并掌握Redis集群的应用。 ... [详细]
  • 本文详细介绍了游戏中胜场数和净胜场数的计算方式,通过公式解析和实例说明,帮助玩家更好地理解这两项统计数据。文章还提供了多种计算方法及其应用场景,确保读者能够全面掌握相关知识。 ... [详细]
  • 华为Mate 60 Pro截屏指南
    了解如何在华为Mate 60 Pro上进行截屏操作。本文将详细介绍多种便捷的截屏方法,帮助用户快速掌握这一实用功能。 ... [详细]
  • 本教程将指导您如何运用Photoshop中的笔刷、路径等工具,通过高超的控制技巧,从简单图形出发,打造出令人惊艳的光束效果。适合有一定基础的用户进行尝试。 ... [详细]
  • 本文探讨了在使用Selenium进行自动化测试时,由于webdriver对象实例化位置不同而导致浏览器闪退的问题,并提供了详细的代码示例和解决方案。 ... [详细]
author-avatar
白日星445533
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有