当前位置: 首页 > news >正文

注册php tp5,thinkphp5 开发会员注册与登录功能

会员的注册与登录不少新手学员可能没有做过,感到比较疑惑,其实是非常简单的,下面我们就来说一下:注册实际上就是创建了一个添加数据的表单,和我们在后台添加文章的表单道理是一样的,只不过在前台的时候我们往数据表里面添加的是用户的信息罢了,登录就更简单了,也是创建一个表单,这次接到表单信息后就不是添加数据了,而是判断你提交的数据在我们的用户表里面是否存在,如果存在的话你提交的用户名和密码是否匹配,总体思路仅此而已,下面我们贴出核心代码供大家参考:

首先要有一个用户表,最基本的三个字段是:id,usernam,password缺一不可

有时候我们还会添加一些其他的字段,比如:会员的注册时间,注册地址,最后一次登录的时间,登录的ip等等,具体要根据你的业务需求来决定。

我们本次的演示是通过tp5的代码来演示,但是不管你使用什么框架或是原生也好,思路都是一样的:

这里是注册界面:

9e6e000cc830cd15c677cc0fc3fa0a43.png

这个是登录界面:

2a88f19d2cf5e3d36239b9a7d5dbe375.png

注册逻辑:

public function reg(){

if(request()->isPost()){

$data=input(‘post.’);

$validate = validate(‘User’);

if(!$validate->check($data)){

$this->error($validate->getError());

}

$userData=array();

$userData[‘username’]=trim($data[‘username’]);

$userData[‘password’]=md5($data[‘password’]);

$userData[’email’]=$data[’email’];

$userData[‘mobile_phone’]=$data[‘mobile_phone’];

$userData[‘register_type’]=$data[‘register_type’];

$userData[‘register_time’]=time();

$add=db(‘user’)->insert($userData);

if($add){

$loginRes=$this->login(1);

if($loginRes[‘error’] == 0){

$this->success(‘注册成功!正在为您跳转…’,’member/User/index’);

}else{

$this->success(‘注册成功!正在为您跳转…’,’member/Account/login’);

}

}else{

$this->error(‘注册失败!’);

}

}

return view();

}

登录的逻辑代码:

public function login($type=0){

if(request()->isPost()){

$data=input(‘post.’);

return model(‘user’)->login($data,$type);

}

return view();

}

上面的登录代码是控制器的逻辑,具体实现登录的代码在模型层:

public function login($data,$type=0){

$userData=array();

$userData[‘username’]=trim($data[‘username’]);

$userData[‘password’]=md5($data[‘password’]);

//验证用户名或邮箱或手机号是否存在

$users=db(‘user’)->where(array(‘username’=>$userData[‘username’]))->whereOr(array(’email’=>$userData[‘username’]))->whereOr(array(‘mobile_phone’=>$userData[‘username’]))->find();

// dump($users); die;

if($users){

if($users[‘password’] == $userData[‘password’]){

session(‘uid’,$users[‘id’]);

session(‘username’,$users[‘username’]);

//写入会员等级及折扣率

$points=$users[‘points’];

$memberLevel=db(‘member_level’)->where(‘bom_point’,'<=’,$points)->where(‘top_point’,’>=’,$points)->find();

session(‘level_id’,$memberLevel[‘id’]);//等级id

session(‘level_rate’,$memberLevel[‘rate’]);//等级折扣率

//写入cookie

if(isset($data[‘remember’])){

$aMonth=30*24*60*60;

$username=encryption($users[‘username’],0);

$password=encryption($data[‘password’],0);

cookie(‘username’, $username, $aMonth, ‘/’);

cookie(‘password’, $password, $aMonth, ‘/’);

}

$arr=[

‘error’=>0,

‘message’=>"",

];

if($type == 1){

return $arr;

}else{

return json($arr);

}

}else{

$arr=[

‘error’=>1,

‘message’=>"用户名或者密码错误",

‘url’=>”,

];

if($type == 1){

return $arr;

}else{

return json($arr);

}

}

}else{

$arr=[

‘error’=>1,

‘message’=>"用户名或者密码错误",

‘url’=>”,

];

if($type == 1){

return $arr;

}else{

return json($arr);

}

}

}

[/php]

具体的退出的代码我们也来说一下吧:

[php]

public function logout(){

session(NUll);

cookie(‘username’,null);

cookie(‘password’,null);

}

ok了。是不是非常简单。

相关文章:

  • php xml序列化,深入理解:XML与对象的序列化与反序列化
  • matlab ceil,Matlab中的取整函数fix, floor, ceil与round
  • php 创建mssql 表,在php表中显示MSSQL选择数据
  • matlab 热图,基于表格数据创建热图
  • getlocation.php,关于微信小程序 location API接口的解析
  • php 调用未定义方法,关于php:Laravel调用未定义的方法create()和save()
  • eclipse java 源代码,ECLIPSE 调试java 源码
  • excel按条件查询mysql,excel多个表格满足条件的数据库-excel表格满足多条件的数据汇总(vlookup?)...
  • php多张图片制作成视频教程,PS如何将一张图片做成多张图片叠加效果
  • matlab查看hdf5数据,Matlab 操作 HDF5文件
  • 蓝桥杯java c组真题解析,蓝桥杯C语言C组校内赛题目解析
  • empty reply from server php,php curl连接返回:Empty reply from server
  • oracle掉电后ora 00600,oracle断电重启之ORA-00600[4194]
  • oracle+怎么清理碎片,oracle 收缩表、清理碎片,释放空间
  • oracle数据库程序题,oracle数据库经典练习题及答案
  • [case10]使用RSQL实现端到端的动态查询
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • httpie使用详解
  • Invalidate和postInvalidate的区别
  • Javascripit类型转换比较那点事儿,双等号(==)
  • js递归,无限分级树形折叠菜单
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Nodejs和JavaWeb协助开发
  • npx命令介绍
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • springMvc学习笔记(2)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 每天一个设计模式之命令模式
  • 时间复杂度与空间复杂度分析
  • 我是如何设计 Upload 上传组件的
  • 一个项目push到多个远程Git仓库
  • 移动端唤起键盘时取消position:fixed定位
  • 用Python写一份独特的元宵节祝福
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Spring Batch JSON 支持
  • zabbix3.2监控linux磁盘IO
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (ibm)Java 语言的 XPath API
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (一)插入排序
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)菜鸟学数据库(三)——存储过程
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .net CHARTING图表控件下载地址
  • .NET Framework .NET Core与 .NET 的区别
  • .net连接MySQL的方法
  • .sys文件乱码_python vscode输出乱码
  • /etc/skel 目录作用