基于PHP实现用户注册登录功能_php实例_脚本之家

来源:http://www.sh-fengwen.com 作者:鲜果干果 人气:126 发布时间:2019-11-26
摘要:本文实例讲述了PHP实现用户异地登录提醒功能的方法。分享给大家供大家参考,具体如下: 本文介绍的是基于PHP实现用户注册登录功能,本项目分为四部分内容:1前端页面制作,2验证

本文实例讲述了PHP实现用户异地登录提醒功能的方法。分享给大家供大家参考,具体如下:

本文介绍的是基于PHP实现用户注册登录功能,本项目分为四部分内容:1前端页面制作,2验证码制作,3实现注册登陆,4功能完善。具体情况可以往下看。

对于安全性要求比较高的web网站,特别是后台管理,有时候需要甄别自己的账号是否被盗或者是否有另一个人此刻登陆了在进行后台操作,这些都会很不安全,为了避免两个人同时登录同时操作,可以强制下线一个账号。

本次实验将会带领大家使用面向对象的思想封装一个验证码类。并在注册和登陆界面展示使用。通过本次实验的学习,你将会领悟到 PHP 的 OOP 思想,以及 GD 库的使用,验证码生成。

通过IP判断当然是不行的,因为IP是随时会在某一个网段内变化的,但是有一个机制,恰巧可以解决这个,那就是session,只要使用同一个浏览器访问网站,浏览器不关闭每个来访者的session_id是不变的,这也正是解决这个问题需要的。

1.1 涉及到的知识点

以TP框架搭建的网站后台为例,思路如下:

PHP GD库 OOP编程

数据库用户表

sublime,一个方便快速的文本编辑器。点击桌面左下角: 应用程序菜单/开发/sublime

在user表中,增加一个字段`session_id` varchar,用来存放登录之后的session_id。

2.1 建立目录以及准备字体

用户登录

在 web 目录下建立一个 admin 目录作为我们的后台目录,存放后台代码文件。在 admin 下建立一个 fonts 目录,用于存放制作验证码所需字体。

用户登录,就是正常的判断账号密码以及验证码,当这些都验证通过的时候,取出当前的session_id存入数据库user表中。

在 admin 下新建一个 Captcha.php 文件,这就是我们需要编辑的验证码类文件。

M->where(array('id'=>$_SESSION['uid']))->save(array('session_id'=>session_id;

编辑 Captcha.php 文件:

解决异地登录问题

添加该类的私有属性和构造方法:string = 'qwertyupmkjnhbgvfcdsxa123456789'; //去除一些相近的字符 $this->codeNum = $codeNum; $this->height = $height; $this->width = $width; $this->lineFlag = $lineFlag; $this->piexFlag = $piexFlag; $this->font = dirname.'/fonts/consola.ttf'; $this->fontSize = $fontSize; }}

对于后台操作,为了便于验证和操作安全,基本都会先创建一个基础控制器BaseController,然后后台的其他操作控制器都继承这个基础控制器。对于后台的每一步操作之前,用户状态的检测都放在BaseController控制器的初始化_initialize()方法中。

字体文件可通过以下命令下载到 fonts 目录:

现在在_initialize()方法中,除了验证用户登录状态是否被锁定等等,还要取出本地session_id和存放在user表中的session_id进行比对,如果对不上那么表名账号在异地有登陆,这时候可以迫使强制下线,退回到登录页面。

$ wget

$user = M->where(array('id'=>$_SESSION['uid']))->find();$session_id = session_id();if($user['session_id'] != $session_id){ session_destroy(); $this->error('您的账号在其他地方登录,您已经被强制下线', U;}

接下来开始编写具体的方法:

当然也可以获取到异地登陆的IP,给出提醒:

//创建图像资源 public function createImage(){ $this->img = imagecreate($this->width, $this->height); //创建图像资源 imagecolorallocate($this->img,mt_rand,mt_rand; //填充图像背景 }

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

imagecreate:新建一个基于调色板的图像 imagecolorallocate:为一幅图像分配颜色 mt_rand:生成更好的随机数

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

创建验证码字符串并输出到图像

//创建验证码 public function createCode(){ $strlen = strlen-1; for ($i=0; $i < $this->codeNum; $i++) { $this->code .= $this->string[mt_rand]; //从字符集中随机取出四个字符拼接 } $_SESSION['code'] = $this->code; //加入 session 中 //计算每个字符间距 $diff = $this->width/$this->codeNum; for ($i=0; $i < $this->codeNum; $i++) { //为每个字符生成颜色 $txtColor = imagecolorallocate($this->img,mt_rand,mt_rand,mt_rand; //写入图像 imagettftext($this->img, $this->fontSize, mt_rand, $diff*$i+mt_rand, mt_rand, $txtColor, $this->font, $this->code[$i]); } }

imagecreate:新建一个基于调色板的图像 imagecolorallocate:为一幅图像分配颜色 mt_rand:生成更好的随机数

本文由美高梅游戏平台网站发布于鲜果干果,转载请注明出处:基于PHP实现用户注册登录功能_php实例_脚本之家

关键词:

最火资讯