## 登录/注册

### 创建登录控制器

```php

php think make:controller admin/Login --plain

```

> —plain是为了创建控制器更纯净,没有先创建好的一些方法

### 下载验证码插件

这是配合ThinkPHP 5.1版本的

```composer

composer require topthink/think captcha=2.0.*

```

在`Login`控制器里添加`verify()`方法用于验证码

```php

public function verify()

{

$config = [

// 验证码字体大小

'fontSize' => 16,

'length' => 3,

// 关闭验证码杂点

'useNoise' => false,

'useCurve' => false,

];

$captcha = new Captcha($config);

return $captcha->entry();

}

```

在*html*页面中引入

```php+HTML

```

#### 点击验证码图片随机变换的JS

```javascript

$(function () {

var verifyimg = $(".reloadverify").attr("src");

$(".reloadverify").click(function () {

if (verifyimg.indexOf('?') > 0) {

$(".reloadverify").attr("src", verifyimg + '&random=' + Math.random());

} else {

$(".reloadverify").attr("src", verifyimg.replace(/\?.*$/, '') + '?' + Math.random());

}

});

});

```

> 这里的`reloadverify`必须要在`img`中进行定义**class**

### 登录使用Ajax进行登录

> 必须引入jQuery,在配合layui的layer.js进行弹窗效果提示

>

> 在input框中必须输入对应的name值

js代码:

```javascript

$(function () {

$('#login').click(function () {

$.ajax({

url: "{:url('admin/Login/login')}",

type: 'post',

data: $('form').serialize(),

dataType: 'json',

success: function (data) {

if (data.code == 1) {

layer.msg(data.msg, {

icon: 6,

time: 1000

}, function () {

location.href = "{:url('admin/Index/index')}";

})

} else {

layer.open({

title: '登录失败',

content: data.msg,

ico: 5,

anim: 6

})

}

}

});

return false;

});

});

```

### 用Ajax进行注册

```javascript

$(function () {

$('#register').click(function () {

$.ajax({

url: "{:url('admin/Register/register')}",

type: 'post',

data: $('form').serialize(),

dataType: 'json',

success: function (data) {

if (data.code == 1) {

layer.msg(data.msg, {

icon: 6,

time: 1000

}, function () {

location.href = "{:url('admin/Login/index')}";

})

} else {

layer.open({

title: '注册失败',

content: data.msg,

ico: 5,

anim: 6

})

}

}

});

return false;

});

});

```

## 创建模型

我会将模型创建在`application`下的`common`目录,属于前台和后台的公共使用

```php

php think make:model common/Manager

```

用模型进行处理数据

```php

use SoftDelete;

// 自动引入时间戳

protected $autoWriteTimestamp = true;

// 用户登录验证

public static function login($data)

{

$validate = new LoginValidate();

if (!$validate->scene('login')->check($data)) {

return json(['code' => 0, 'msg' => $validate->getError()]);

}

$res = self::get(['username' => $data['username']]);

if (!$res) {

return json(['code' => 0, 'msg' => '账号不存在']);

}

if (!$res['status']) {

return json(['code' => 0, 'msg' => '账号禁用']);

}

if (md5($data['password']) == $res['password']) {

session('adminid', $res['id']);

session('username', $res['username']);

session('nickname', $res['nickname']);

return json(['code' => 1, 'msg' => '登录成功']);

}

return json(['code' => 0, 'msg' => '密码不正确']);

}

// 获取所有管理员的信息

public static function getAllManager()

{

$lists = self::where('id', 'asc');

return $lists;

}

// 添加修改管理员

public static function store($data)

{

if (isset($data['id'])) {

$scene = 'edit';

$msg = '修改';

$action = "update";

} else {

$scene = 'add';

$msg = '添加';

$action = "create";

}

$data['password'] = md5($data['password']);

// 写入数据库

unset($data['confirm_password']);

$result = self::$action($data);

if (!$result) {

return json(['code' => 0, 'msg' => $msg.'失败']);

}

return json(['code' => 1, 'msg' => $msg.'成功']);

}

public static function del($id)

{

$result = self::destroy($id);

if ($result) {

return json(['code' => 1, 'msg' => '删除成功']);

}

return json(['code' => 0, 'msg' => '删除失败']);

}

```

## 创建验证器

```php

php think make:validate common/LoginValidate

```

```php

/**

* 定义验证规则

* 格式:'字段名'=>['规则1','规则2'...]

*

* @var array

*/

protected $rule = [

'username' => 'require|unique:manager',

'password' => 'require|length:6,20',

'confirm_password' => 'require|confirm:password',

'code' => 'require',

'email' => 'require|email|unique:manager'

];

/**

* 定义错误信息

* 格式:'字段名.规则名'=>'错误信息'

*

* @var array

*/

protected $message = [

'id.require' => 'id不正确',

'username.require' => '用户名不能为空',

'username.unique' => '用户名必须唯一',

'password.require' => '密码不能为空',

'password.length' => '密码长度在6~20个字符之内',

'confirm_password.require' => '确认密码不能为空',

'confirm_password.confirm' => '两次密码输入不相同',

'code.require' => '验证码不能为空',

'email.require' => '邮箱不能为空',

'email.email' => '邮箱格式不正确',

'email.unique' => '该邮箱已存在'

];

protected $scene = [

'login' => ['username' => 'require|unique:manager',"password"],

'add' => ['username', 'password', 'confirm_password', 'email'],

'edit' => ['id']

];

```

## 登录控制器

```php

/**

* 显示登录页面

* @return \think\response\View

*/

public function index()

{

return view();

}

public function login()

{

$data = input('post.');

$result = Manager::login($data);

return $result;

}

```

## 注册控制器

```php

// 注册页面

public function index()

{

return view();

}

public function register()

{

$data = input('post.');

$validate = new LoginValidate();

if (!$validate->scene('add')->check($data)) {

return json(['code' => 0, 'msg' => $validate->getError()]);

}

$data['created_at'] = time();

$data['status'] = 1;

$result = Manager::store($data);

return $result;

}

```

## ThinkPHP5 模型时间戳设置

> 单独在模型里面设置(推荐)

```

protected $autoWriteTimestamp = true; // int 型

protected $autoWriteTimestamp = 'datetime'; // datetime 类型

protected $autoWriteTimestamp = false; // 关闭自动写入时间戳

protected $updateTime = false;       // 只关闭自动写入update_time字段

```

> 在config里添加全局设置

```

/ 开启自动写入时间戳字段(官方手册这么说,自己并没有测试出来)

'auto_timestamp' => true, // 默认为int型

'auto_timestamp' => 'datetime', // datetime类

'auto_timestamp' => false,  // 关闭全局自动写入时间字段

```

> 如果数据表字段不是默认值(假设数据库字段名为create_at和update_at)

```

// 定义时间戳字段名

protected $createTime = 'create_at';    // 默认的字段为create_time 和 update_time

protected $updateTime = 'update_at';

```

注册php tp5,TP5登录注册相关推荐

  1. java优化登录注册,Java-Web(项目)优化登录注册

    Java-Web(项目)优化登录注册 Java-Web(项目)优化登录注册 实现代码: package com.homework.dao1; public interface Login { publ ...

  2. 右侧按钮登录注册html,翻转式用户登录注册界面设计

    这是一款非常实用的翻转式用户登录注册界面设计效果.该用户登录注册界面使用纯CSS3来制作,在用户点击登录和注册两个按钮时,登录和注册界面可以以水平翻转的方式来回切换,效果非常的酷. 制作方法 HTML ...

  3. mysql登录注册留言_实现登录注册的留言板思路

    代码见 一.登录界面 1.  布局: a)      定width , height , margin:20px auto , box-shadow , border-radius b)      p ...

  4. node mysql登录注册_Node数据库入门(登录注册功能)

    const http=require('http');const mysql=require('mysql');const url=require('url');const fs=require('f ...

  5. mysql登录注册留言_能登录注册的留言板(1)——实现登录

    (一) 小白实现了登录操作,如图,代码在下面 一.登录界面 1.  布局: a)      定width , height , margin:20px auto , box-shadow , bord ...

  6. php开发之登录注册教程,PHP开发登录注册完整代码之注册PHP页面

    创建我们的 reg.php 文件 此页面完成的功能如下 代码如下<?php session_start(); header("Content-type:text/html;charse ...

  7. MySQL的ODBC驱动下载及安装 (免登录注册)

    1. 下载ODBC驱动安装包 下载地址: https://dev.mysql.com/downloads/connector/odbc/ ps:我的电脑是 64位, 但是在安装 ODBC 时报错,数据 ...

  8. 分享发现一个优秀WP插件 2022最新WordPress登录注册会员功能一体的插件LOGINUSER-CH

    手机/QQ登录注册完美代替传统登录注册会员中心,建站必备独立用户中心,功能完整(支持投稿),让你博客提升一个档次,如需充值搭配市面ErphpDown插件效果更佳.手机+社会化登录 代替早该淘汰传统邮箱 ...

  9. android servlet 登陆,Android Studio+Servlet+MySql实现登录注册

    一.Android 项目当中设置明文传输 1.设置明文传输的xml 2.引入上述创建的xml android:networkSecurityConfig="@xml/network_secu ...

最新文章

  1. flashcache mysql_flashcache的实现与分析
  2. python将大于输出列表_程序检查列表中的所有值是否都大于Python中的给定值
  3. 50 种不同编程语言的“Hello World”,你知多少?
  4. Cert manager自动签发/更新证书
  5. IPRO_DOCXCC_FILLIN_UUIDTONAME
  6. Mysql读写分离php脚本
  7. cypress测试脚本_Cypress 自动化测试学习使用
  8. tomcat 内存调整
  9. js数组(列表)的基本操作
  10. Windows Server 2012 2R服务器版本域控制器的安装及域环境的搭建(内有镜像下载)...
  11. Linux下PHP开发环境搭建(Apache2.4+PHP7.1+MySQL8.0)
  12. linux ping 获取网络状态,Shell - 长 ping 脚本监控网络状态
  13. 盒仔机器人_DFROBOT SEN0240 肌电传感器 OYMotion 产品资料 使用教程
  14. centos7 卸载service服务
  15. ios 版手机迅雷的安装方法
  16. python显示灰度图像,Python读取图像并显示灰度图的实现
  17. 元宵节没用智能名片在互联网发贺卡,那就OUT了
  18. 停止使用 IE 11,微软将用 Edge 全面替换 IE
  19. ar vr mr 计算机技术,VR技术是什么?AR、MR又是什么?
  20. phy 驱动与 switch 驱动

热门文章

  1. C语言程序设计基础实验教程,C语言程序设计基础实验教程
  2. JAVA中为什么要用接口定义编程_【Java公开课|为什么要用Java接口,这些内容你一定要搞清楚】- 环球网校...
  3. oracle共享内存设置spfile,IPC 资源、kernel.shmmax和Oracle 共享内存的调整
  4. 脉冲宽度调制pdm_两个相同Vpp驱动的 PAM4 MZ调制器
  5. 网络管理 之 Fedora Core 网络配置工具system-config-network介绍
  6. 2、ES5的严格模式use strict
  7. Python模块-decimal
  8. MVC4 数据验证、特性、自动属性总结
  9. 移动终端如何远程接入企业的核心系统?
  10. 解决Linux中文乱码问题