分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

ThinkPHP登陆注册

发布时间:2023-09-06 01:28责任编辑:蔡小小关键词:PHP

thinkphp实现注册登录功能

浏览:25238发布日期:2015/06/30分类:技术分享 关键字:thinkphp登录注册
使用最新的thinkphp3.2.3版本,需要注意命名空间的使用。
均为后台验证,前台ajax验证未做处理。后续加上。。。
登录时,更新用户数据,登录ip和登录时间,以及登录次数+1,此实现方便不知是否合适,待验证。
源码地址:https://github.com/grh0812/thinkphp-login-register

创建数据库 :
  1. /*
  2. NavicatMySQLDataTransfer
  3. SourceServer:本地连接
  4. SourceServerVersion:50617
  5. SourceHost:localhost:3306
  6. SourceDatabase:crm
  7. TargetServerType:MYSQL
  8. TargetServerVersion:50617
  9. FileEncoding:65001
  10. Date:2015-06-2923:55:28
  11. */
  12. SETFOREIGN_KEY_CHECKS=0;
  13. ------------------------------
  14. --Tablestructureforthink_users
  15. ------------------------------
  16. DROPTABLEIFEXISTS`think_users`;
  17. CREATETABLE`think_users`(
  18. `userid`mediumint(8)unsignedNOTNULLAUTO_INCREMENTCOMMENT‘用户id‘,
  19. `companyid`mediumint(8)unsignedNOTNULLCOMMENT‘公司id‘,
  20. `pid`mediumint(8)NOTNULLCOMMENT‘父id‘,
  21. `username`char(20)NOTNULLDEFAULT‘‘COMMENT‘用户名‘,
  22. `password`char(32)NOTNULLDEFAULT‘‘COMMENT‘密码‘,
  23. `nickname`char(20)NOTNULLDEFAULT‘‘COMMENT‘昵称‘,
  24. `regdate`int(10)unsignedNOTNULLCOMMENT‘注册时间‘,
  25. `lastdate`int(10)unsignedNOTNULLCOMMENT‘最后一次登录时间‘,
  26. `regip`char(15)NOTNULLDEFAULT‘‘COMMENT‘注册ip‘,
  27. `lastip`char(15)NOTNULLDEFAULT‘‘COMMENT‘最后一次登录ip‘,
  28. `loginnum`smallint(5)unsignedNOTNULLDEFAULT‘0‘COMMENT‘登录次数‘,
  29. `email`char(32)NOTNULLDEFAULT‘‘COMMENT‘邮箱‘,
  30. `mobile`char(11)NOTNULLDEFAULT‘‘COMMENT‘手机号码‘,
  31. `islock`tinyint(1)unsignedNOTNULLDEFAULT‘0‘COMMENT‘是否锁定‘,
  32. `vip`tinyint(1)unsignedNOTNULLDEFAULT‘0‘COMMENT‘是否会员‘,
  33. `overduedate`int(10)unsignedNOTNULLCOMMENT‘账户过期时间‘,
  34. `status`tinyint(1)unsignedNOTNULLDEFAULT‘0‘COMMENT‘状态-用于软删除‘,
  35. PRIMARYKEY(`userid`),
  36. UNIQUEKEY`username`(`username`)USINGBTREE,
  37. KEY`email`(`email`)USINGBTREE
  38. )ENGINE=MyISAMAUTO_INCREMENT=5DEFAULTCHARSET=utf8;
复制代码
创建模型(用于自动验证, 自动完成) :
  1. namespaceHome\Model;
  2. useThink\Model;
  3. classUsersModelextendsModel{
  4. /**
  5. *自动验证
  6. *self::EXISTS_VALIDATE或者0存在字段就验证(默认)
  7. *self::MUST_VALIDATE或者1必须验证
  8. *self::VALUE_VALIDATE或者2值不为空的时候验证
  9. */
  10. protected$_validate=array(
  11. array(‘nickname‘,‘require‘,‘昵称不能为空!‘),//默认情况下用正则进行验证
  12. array(‘username‘,‘require‘,‘用户名不能为空!‘),//默认情况下用正则进行验证
  13. array(‘username‘,‘‘,‘该用户名已被注册!‘,0,‘unique‘,1),//在新增的时候验证name字段是否唯一
  14. array(‘email‘,‘‘,‘该邮箱已被占用‘,0,‘unique‘,1),//新增的时候email字段是否唯一
  15. array(‘mobile‘,‘‘,‘该手机号码已被占用‘,0,‘unique‘,1),//新增的时候mobile字段是否唯一
  16. //正则验证密码[需包含字母数字以及@*#中的一种,长度为6-22位]
  17. array(‘password‘,‘/^([a-zA-Z0-9@*#]{6,22})$/‘,‘密码格式不正确,请重新输入!‘,0),
  18. array(‘repassword‘,‘password‘,‘确认密码不正确‘,0,‘confirm‘),//验证确认密码是否和密码一致
  19. array(‘email‘,‘email‘,‘邮箱格式不正确‘),//内置正则验证邮箱格式
  20. array(‘mobile‘,‘/^1[34578]\d{9}$/‘,‘手机号码格式不正确‘,0),//正则表达式验证手机号码
  21. array(‘verify‘,‘verify_check‘,‘验证码错误‘,0,‘function‘),//判断验证码是否正确
  22. //array(‘agree‘,‘is_agree‘,‘请先同意网站安全协议!‘,1,‘callback‘),//判断是否勾选网站安全协议
  23. array(‘agree‘,‘require‘,‘请先同意网站安全协议!‘,1),//判断是否勾选网站安全协议
  24. );
  25. /**
  26. *自动完成
  27. */
  28. protected$_auto=array(
  29. array(‘password‘,‘md5‘,3,‘function‘),//对password字段在新增和编辑的时候使md5函数处理
  30. array(‘regdate‘,‘time‘,1,‘function‘),//对regdate字段在新增的时候写入当前时间戳
  31. array(‘regip‘,‘get_client_ip‘,1,‘function‘),//对regip字段在新增的时候写入当前注册ip地址
  32. );
  33. /**
  34. *判断是否同意网站安全管理协议
  35. *@returnbool
  36. */
  37. protectedfunctionis_agree()
  38. {
  39. //获取POST数据
  40. $agree=I(‘post.agree‘,0,‘intval‘);
  41. //验证
  42. if($agree){
  43. returntrue;
  44. }else{
  45. returnfalse;
  46. }
  47. }
复制代码
登录注册 :
  1. namespaceHome\Controller;
  2. useThink\Controller;
  3. /**
  4. *ClassLoginController
  5. *@packageHome\Controller
  6. */
  7. classLoginControllerextendsController{
  8. /**
  9. *用户登录
  10. */
  11. publicfunctionlogin()
  12. {
  13. //判断提交方式
  14. if(IS_POST){
  15. //实例化Login对象
  16. $login=D(‘login‘);
  17. //自动验证创建数据集
  18. if(!$data=$login->create()){
  19. //防止输出中文乱码
  20. header("Content-type:text/html;charset=utf-8");
  21. exit($login->getError());
  22. }
  23. //组合查询条件
  24. $where=array();
  25. $where[‘username‘]=$data[‘username‘];
  26. $result=$login->where($where)->field(‘userid,username,nickname,password,lastdate,lastip‘)->find();
  27. //验证用户名对比密码
  28. if($result&&$result[‘password‘]==$result[‘password‘]){
  29. //存储session
  30. session(‘uid‘,$result[‘userid‘]);//当前用户id
  31. session(‘nickname‘,$result[‘nickname‘]);//当前用户昵称
  32. session(‘username‘,$result[‘username‘]);//当前用户名
  33. session(‘lastdate‘,$result[‘lastdate‘]);//上一次登录时间
  34. session(‘lastip‘,$result[‘lastip‘]);//上一次登录ip
  35. //更新用户登录信息
  36. $where[‘userid‘]=session(‘uid‘);
  37. M(‘users‘)->where($where)->setInc(‘loginnum‘);//登录次数加1
  38. M(‘users‘)->where($where)->save($data);//更新登录时间和登录ip
  39. $this->success(‘登录成功,正跳转至系统首页...‘,U(‘Index/index‘));
  40. }else{
  41. $this->error(‘登录失败,用户名或密码不正确!‘);
  42. }
  43. }else{
  44. $this->display();
  45. }
  46. }
  47. /**
  48. *用户注册
  49. */
  50. publicfunctionregister()
  51. {
  52. //判断提交方式做不同处理
  53. if(IS_POST){
  54. //实例化User对象
  55. $user=D(‘users‘);
  56. //自动验证创建数据集
  57. if(!$data=$user->create()){
  58. //防止输出中文乱码
  59. header("Content-type:text/html;charset=utf-8");
  60. exit($user->getError());
  61. }
  62. //插入数据库
  63. if($id=$user->add($data)){
  64. /*直接注册用户为超级管理员,子用户采用邀请注册的模式,
  65. 遂设置公司id等于注册用户id,便于管理公司用户*/
  66. $user->where("userid=$id")->setField(‘companyid‘,$id);
  67. $this->success(‘注册成功‘,U(‘Index/index‘),2);
  68. }else{
  69. $this->error(‘注册失败‘);
  70. }
  71. }else{
  72. $this->display();
  73. }
  74. }
  75. /**
  76. *用户注销
  77. */
  78. publicfunctionlogout()
  79. {
  80. //清楚所有session
  81. session(null);
  82. redirect(U(‘Login/login‘),2,‘正在退出登录...‘);
  83. }
  84. /**
  85. *验证码
  86. */
  87. publicfunctionverify()
  88. {
  89. //实例化Verify对象
  90. $verify=new\Think\Verify();
  91. //配置验证码参数
  92. $verify->fontSize=14;//验证码字体大小
  93. $verify->length=4;//验证码位数
  94. $verify->imageH=34;//验证码高度
  95. $verify->useImgBg=true;//开启验证码背景
  96. $verify->useNoise=false;//关闭验证码干扰杂点
  97. $verify->entry();
  98. }
  99. }
复制代码
登录模版 :
  1. <formaction="__SELF__"method="post">
  2. <div>
  3. <inputtype="text"name="username"placeholder="用户名"/>
  4. <span></span>
  5. </div>
  6. <div>
  7. <inputtype="password"name="password"placeholder="密码"/>
  8. <span></span>
  9. </div>
  10. <div>
  11. <inputtype="text"name="verify"placeholder="验证码"style="width:200px;"/>
  12. <spanstyle="right:120px;"></span>
  13. <imgsrc="{:U(verify)}"alt="验证码"/>
  14. </div>
  15. <div>
  16. <div>
  17. <div>
  18. <label>
  19. <inputtype="checkbox"name="remember"value="1">记住我
  20. </label>
  21. </div>
  22. </div><!--/.col-->
  23. <div>
  24. <buttontype="submit">登录</button>
  25. </div><!--/.col-->
  26. </div>
  27. </form>
复制代码
注册模版 :
  1. <div>
  2. <p>注册一个新用户</p>
  3. <formaction="__SELF__"method="post">
  4. <div>
  5. <inputtype="text"name="nickname"placeholder="昵称"/>
  6. <span></span>
  7. </div>
  8. <div>
  9. <inputtype="text"name="username"placeholder="用户名"/>
  10. <span></span>
  11. </div>
  12. <div>
  13. <inputtype="password"name="password"placeholder="密码"/>
  14. <span></span>
  15. </div>
  16. <div>
  17. <inputtype="password"name="repassword"placeholder="确认密码"/>
  18. <span></span>
  19. </div>
  20. <div>
  21. <inputtype="email"name="email"placeholder="邮箱"/>
  22. <span></span>
  23. </div>
  24. <div>
  25. <inputtype="text"name="mobile"placeholder="手机号码"/>
  26. <span></span>
  27. </div>
  28. <div>
  29. <inputtype="text"name="verify"placeholder="验证码"style="width:200px;"/>
  30. <spanstyle="right:120px;"></span>
  31. <imgsrc="{:U(verify)}"alt="验证码"/>
  32. </div>
  33. <div>
  34. <div>
  35. <div>
  36. <label>
  37. <inputtype="checkbox"name="agree"value="1">我同意<ahref="#">网站安全协议</a>
  38. </label>
  39. </div>
  40. </div><!--/.col-->
  41. <div>
  42. <buttontype="submit">点击注册</button>
  43. </div><!--/.col-->
  44. </div>
  45. </form>
  46. <ahref="login.html">我已经注册了账户</a>
  47. </div>
复制代码
困扰:
注册的账户全都是管理员账户, 子
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved