学习心得(1):如何利用PHP写验证码 每日一更 自我督促

PHP验证码小项目:

<?php

header(‘Content-type:image/jpeg‘);

$img=imagecreatetruecolor(120,40);//建立图像

$element=array(‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘,‘k‘);//验证码随机字母,设定数组

$string=‘‘;//定义变量,该变量能设定验证码随机字母

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

$string.=$element[rand(0,count($element)-1)];

}//实现验证码随机字母,把$element该数组循环5次,产生5个随机字母

$color1=imagecolorallocate($img,rand(200,250),rand(200,250),rand(200,250));//为新建图像随机分配颜色

$color2=imagecolorallocate($img,rand(150,200),rand(150,200),rand(150,200));//为新建图像像素点随机分配颜色

imagefill($img,0,0,$color1);//图像坐标和颜色

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

imagesetpixel($img,rand(0,120),rand(0,40),$color2);

}//单点像素循环100次,在页面随机坐标产生100个像素点

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

imageline($img,rand(0,120/2),rand(0,40),rand(60,120),rand(0,40),$color2);

}//线条循环3次,在页面随机坐标产生3条线条

imagettftext($img,25,rand(-5,5),rand(5,15),rand(30,35),$color2,‘font/Fudgie.ttf‘,$string);

//写入验证码字体,设置大小,角度,方位,颜色

imagejpeg($img);//输出格式JPEG图像

imagedestroy($img);//释放图像资源

?>

步骤1: 利用imagecreatetruecolor建立图像,用imagefill为图像定位和分配颜色。
步骤2:利用imagecolorallocate为新建立的图像随机分配颜色装入变量$color1,再把$color1装回
       imagefill这个函数里面。
步骤3:利用imagecolorallocate为新建立的图像随机分配颜色装入变量$color2,再把$color2装回
       imagesetpixel这个函数里面,利用imagesetpixel设置验证码上的像素点,并利用for循环,        在验证码上循环100次,产生100个随机坐标像素点。
步骤4: 利用imageline设置验证码上的线条,并利用for循环,在验证上循环3次,产生3条随机坐标的       线条,线条颜色为了快捷并没有利用imagecolorallocate创建第3种颜色,沿用了$color2,实       际项目,有需求需要再创建颜色出来。
步骤5:利用imagettftext创建验证码上的字体,该函数可以输入其他风格的字体,具体字体可以在网       上下载,下载以后,把字体TTF文件放进和当前写的PHP文件上同一目录,然后在imagettftext       上设置该TTF文件的路径即可,具体查看PHP手册,下一步是本人认为难点的一步,就是让验证       码上的字母随机转换。
步骤6:要让验证码上的字母随机转换,首先要设置一个变量$string,里面写一个数组array,数组里       面包含你想转换的随机字母,如我上面做的项目$element,里面写的一个数组,里面含有a-k        在内的字母,然后也是利用for循环,循环5次,循环a-k在内的字母里面随机5次。里面有两个       注意点,第一个是进行循环前,需要设置变量$string,而$string由于是变量需要先在循环前       重定义一下,我当初在这纠结很久,因为前两个for循环并没有变量在里面,所以导致我这里        忘记把变量重定义了,第二个注意点是rand(0,count($element)-1),为什么$element要减去1       ,后来问了各路大神才知道count这个函数是统计数组的个数,这里统计数组a-k的个数是11,       但是rand是随机数组下标的,是从程序0开始算,a-k如果a从0算起到k只能到10,而函数             $element统计个数是11,所以$element才要减去1变成10,以便rand来计算。
步骤7:输出建立图像时的格式,我这里是JPEG和释放图片资源。

以上步骤欢迎各路大神补充,交流,有写错也很正常,本人是菜鸟,不过能写上博客,都是测试出效果的,下面有效果图,大家可以看看,欢迎大家交流。

最后有个问题点,无关重要,所以也没去问,但是如果有大神,还是希望大神,大牛们能教导下:

关于我写的项目$string.=$element[rand(0,count($element)-1)],变量$string要用连接符.来连接才能随机5个字母,我尝试不加上连接符,但是只能随机出一个字母,所以我想,应该是     $element[rand(0,count($element)-1)]这个程序执行完,只能随机一个字母,然后返回变量$string,加上连接符然后继续运行,直到循环5次结束,不知道这样理解是否正确,如果有大神看到,麻烦把逻辑详细说说,小弟感激不尽。

时间: 2024-10-24 18:56:20

学习心得(1):如何利用PHP写验证码 每日一更 自我督促的相关文章

学习心得:《十个利用矩阵乘法解决的经典题目》from Matrix67

本文来自:http://www.matrix67.com/blog/archives/tag/poj大牛的博文学习学习 节选如下部分:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律:二,矩阵乘法满足结合律经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置.操作有平移.缩放.翻转和旋转    这 里的操作是对所有点同时进行的.其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心.如果对每个点分别进行模拟,那么m个操作总共耗时 O(mn).利用矩阵乘法可

计算机学习心得

计算机学习心得体会 心得一:计算机学习心得体会 21世纪是一个信息经济时代,为适应时代的发展,作为一名当代大学生,所受的社会压力将比任何时候的大学生都要来得沉重,因此在校期间,我们必须尽可能的利用好学习时间,尽可能地学习更多的知识和能力,学会创新求变,以适应社会的需要. 毕竟,不管将来是要从事什么样的相关行业,都需要掌握较为全面的计算机知识,因为小到计算机的组装维修,大到服务器的维护与测试,知道的更多更全面,那么对于自己以后找工作以及参加工作帮助就越大.在知识经济时代,没有一个用人单位会傻到和知

利用手写数字识别项目详细描述BP深度神经网络的权重学习

本篇文章是针对学习<深度学习入门>(由日本学者斋藤康毅所著陆羽杰所译)中关于神经网络的学习一章来总结归纳一些收获. 本书提出神经网络的学习分四步:1.mini-batch 2.计算梯度 3.更新参数 4.重复前面步骤 1.从识别手写数字项目学习神经网络 所谓“从数据中学习”是指 可以由数据#自动决定权重#.当解决较为简单的问题,使用简单的神经网络时,网络里的权重可以人为的手动设置,去提取输入信息中特定的特征.但是在实际的神经网络中,参数往往是成千上万,甚至可能上亿的权重,这个时候人为手动设置是

Java学习心得04

心得: 统计输入整数位数并想加的3个方法: 1.将数强制转换成字符串,再将该字符串的每个字符(一个字符一个自然数)转换成整数进行操作: 2.将数除10,以余数形式得到最低位,而后该数减余数再除10,一个位处理完毕,必将其从原数中"除去",一遍重复上述操作直至余数为零: 3.偷懒的方法,输入整数的同时,直接输入位数,利用10的幂次方,重复操作: 整体来讲三个方向:利用字符串一次性全部切割,利用10和余数从最右边开始操作,利用10的幂次方从最左边开始操作. 感受: 程序员与bug的情感纠纷

我的MYSQL学习心得(十) 自定义存储过程和函数

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习

windows类书的学习心得(转载)

原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千,很多陌生的出版社,很多陌生的作者,很多陌生的译者,书名也是越来越夸张,什么××天精通××,精通××编程, ××宝典等等,书的印刷质量真的很好,纸张的质量也是今非昔比啊,但书的内容好象却是越来越让人失望,也许是我老了,我的思想我的观念已脱离现实社会,也许是外面的世界变化得太快,我编程数月,出去一走,

我的MYSQL学习心得(十)

原文:我的MYSQL学习心得(十) 我的MYSQL学习心得(十) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 这一篇<我的MYSQL学习心得(十)>将会讲解MYSQL的存储过程和函数 MYSQL中创建存储过程

我的MYSQL学习心得(十四)

我的MYSQL学习心得(十四) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(十三) 这一篇<我的MYSQL学习心得(十四)>将会讲解MYSQL的备份和恢复

我的MYSQL学习心得(十六)

我的MYSQL学习心得(十六) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(十三) 我的MYSQL学习心得(十四) 我的MYSQL学习心得(十五) 一步一步