注册php tp5,TP5登录注册
## 登录/注册
### 创建登录控制器
```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登录注册相关推荐
- java优化登录注册,Java-Web(项目)优化登录注册
Java-Web(项目)优化登录注册 Java-Web(项目)优化登录注册 实现代码: package com.homework.dao1; public interface Login { publ ...
- 右侧按钮登录注册html,翻转式用户登录注册界面设计
这是一款非常实用的翻转式用户登录注册界面设计效果.该用户登录注册界面使用纯CSS3来制作,在用户点击登录和注册两个按钮时,登录和注册界面可以以水平翻转的方式来回切换,效果非常的酷. 制作方法 HTML ...
- mysql登录注册留言_实现登录注册的留言板思路
代码见 一.登录界面 1. 布局: a) 定width , height , margin:20px auto , box-shadow , border-radius b) p ...
- node mysql登录注册_Node数据库入门(登录注册功能)
const http=require('http');const mysql=require('mysql');const url=require('url');const fs=require('f ...
- mysql登录注册留言_能登录注册的留言板(1)——实现登录
(一) 小白实现了登录操作,如图,代码在下面 一.登录界面 1. 布局: a) 定width , height , margin:20px auto , box-shadow , bord ...
- php开发之登录注册教程,PHP开发登录注册完整代码之注册PHP页面
创建我们的 reg.php 文件 此页面完成的功能如下 代码如下<?php session_start(); header("Content-type:text/html;charse ...
- MySQL的ODBC驱动下载及安装 (免登录注册)
1. 下载ODBC驱动安装包 下载地址: https://dev.mysql.com/downloads/connector/odbc/ ps:我的电脑是 64位, 但是在安装 ODBC 时报错,数据 ...
- 分享发现一个优秀WP插件 2022最新WordPress登录注册会员功能一体的插件LOGINUSER-CH
手机/QQ登录注册完美代替传统登录注册会员中心,建站必备独立用户中心,功能完整(支持投稿),让你博客提升一个档次,如需充值搭配市面ErphpDown插件效果更佳.手机+社会化登录 代替早该淘汰传统邮箱 ...
- android servlet 登陆,Android Studio+Servlet+MySql实现登录注册
一.Android 项目当中设置明文传输 1.设置明文传输的xml 2.引入上述创建的xml android:networkSecurityConfig="@xml/network_secu ...
最新文章
- BZOJ 1091([SCOI2003]分割多边形-分割直线)
- 命名式ACL配置实例
- 给求职的同学的几点建议
- 做折线图坐标轴数字_你做的柱状图太丑了,这些美化技巧教给你(收藏)
- jmeter参数化之用户参数
- 单片机为什么一直用C语言,不用其他编程语言?只有学过的知道!
- pagehelper工具类_PageHelper最佳实践
- ES6 的解构赋值前每次都创建一个对象吗?会加重 GC 的负担吗?
- 手机自动化测试的原理
- [原创]Kjava手机顽童模拟器
- 用质谱法定义 HLA-II 配体处理和结合规则可增强癌症表位预测
- mysql dump hbase_导入mysqldump表结构
- 获取路由器内的ADSL上网账号和密码或者获取电脑内的ADSL上网账号和密码教程 by 星空武哥
- JVM性能调优(一)(JVM参数详解、内存分析等)
- The Fun Of Algorithm - Day4 - 百钱百鸡问题
- gophish企业内部钓鱼邮件测试
- 电路中的VDD,DVDD,AVDD,VCC,AFVDD,DOVDD,IOVDD的区别,
- 史上最经典的K线买入技巧
- Python_爬虫_中文乱码
- React教程(五)——生命周期函数
热门文章
- .net中如何同步获取数据方式增加一样数据自动刷新列表_知客CRM如何对接微信公众号...
- SQL Server 2014 新建数据库
- C++面试题-面向对象-静态成员变量以及静态成员函数
- 详解机器视觉照明重点内容
- mybatis中#{}和${}
- 在文本框中插入@对象
- Swift的控制转移语句--continue语句
- 利用python解析手机通讯录
- Spring MVC 基于Method的映射规则(注解版)
- 兼容性极好的圆角边框