介绍
使用PHP怎么实现一个用户注册登录功能吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1.1涉及到的知识点
- <李>
李> PHP GD库<李>
李> <李>
OOP编程
1.2开发工具
崇高,一个方便快速的文本编辑器。点击桌面左下角:应用程序菜单/开发/崇高
二、封装验证码类
2.1建立目录以及准备字体
在web目录下建立一个管理目录作为我们的后台目录,存放后台代码文件。在管理下建立一个字体目录,用于存放制作验证码所需字体。
在管理下新建一个验证码。php文件,这就是我们需要编辑的验证码类文件。
当前目录层次结构:
编辑验证码。php文件:
& lt; ? php /* * *,Captcha 类 */class 验证码 { ,, function 才能;__construct () {才能 ,,,#,代码… ,,} }
添加该类的私有属性和构造方法:
& lt; ? php /* * *,Captcha 类 */class 验证码 { private 才能;codeNum美元;,,//验证码位的数 private 才能;宽度;美元,,//验证码图片宽度 private 才能;高度;美元,,//验证码图片高度 private 才能,img美元;,,//图像资源句柄 private 才能;lineFlag美元;,,//是否生成干扰线条 private 才能;piexFlag美元;,,//是否生成干扰点 private 才能;$字形大小;,,//字体大小 private 才能;代码;美元,,//验证码字符 private 才能;$ string;,,//生成验证码的字符集 private 才能;字体美元;,,//字体 function 才能;__construct ($ codeNum =, 4, height 美元;=,50美元width =, 150美元fontSize =, 20日lineFlag 美元;=,真的,piexFlag 美元;=,真的) {才能 ,,,这个→美元string =, & # 39; qwertyupmkjnhbgvfcdsxa123456789& # 39;,,,//去除一些相近的字符 ,,,这个→美元codeNum =, codeNum美元; ,,,这个→美元height =,美元高度; ,,,这个→美元width =,美元宽度; ,,,这个→美元lineFlag =, lineFlag美元; ,,,这个→美元piexFlag =, piexFlag美元; ,,,这个→美元font =,目录名(__FILE__) # 39;公司/字体/consola.ttf& # 39;; ,,,这个→美元fontSize =,美元字形大小; ,,} }
字体文件可通过以下命令下载到字体目录:
美元wget http://labfile.oss.aliyuncs.com/courses/587/consola.ttf
接下来开始编写具体的方法:
创建图像资源句柄
//创建图像资源,, public function  createImage () { ,,,这个→美元img =, imagecreate ($ this→宽度,,$ this→高度),,,//创建图像资源 ,,,imagecolorallocate ($ this→img, mt_rand (0100), mt_rand (0100), mt_rand(0100));,,//填充图像背景(使用浅色) 以前,,}>用到的相关函数
- <李>
imagecreate:新建一个基于调色板的图像
李> <李>imagecolorallocate:为一幅图像分配颜色
李> <李>mt_rand:生成更好的随机数
李>创建验证码字符串并输出到图像
//创建验证码,, public function  createCode () { ,,,strlen 美元;=,strlen ($ this→字符串)1; ,,,for (i=0;美元,美元小姐:& lt;,这→美元codeNum;,我+ +美元),{, ,,,,,这个→美元code 。=, $ this→字符串[mt_rand (0, strlen美元)];,,//从字符集中随机取出四个字符拼接 ,,,} ,,,,美元_SESSION[& # 39;代码# 39;],=,$ this→代码;,,//加入,session 中 ,, ,,//计算每个字符间距 ,,,diff 美元;=,$ this→宽/$ this→codeNum; ,,,for (i=0;美元,美元小姐:& lt;,这→美元codeNum;,我+ +美元),{, ,,,,,,,,,//为每个字符生成颜色(使用深色) ,,,,txtColor 美元;=,imagecolorallocate ($ this→img, mt_rand (100255), mt_rand (100255), mt_rand (100255)); ,,,,//写入图像 ,,,,,imagettftext ($ this→img, $ this→字形大小,,mt_rand (-30, 30), diff *我美元+ mt_rand (3 8), mt_rand(20,这比美元;高度10),txtColor美元,美元这→字体,,$ this→代码[$ i]); ,,,} 以前,,}>使用PHP怎么实现一个用户注册登录功能