TP5框架中实现多条件登录(自写代码,密码未md5()加密)
HTML代码:
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>前台登录</title>
<link rel="stylesheet" href="__STATIC__/admin/css/login.css">
</head>
<body>
<div class="login">
<div class="center">
<h1>Login</h1>
<div class="inputLi">
<strong>账户</strong>
<input type="text" class="username" name="username" placeholder="用户名/手机号/邮箱">
</div>
<div class="inputLi">
<strong>密码</strong>
<input type="password" class="userpassword" name="userpassword" placeholder="请输入密码">
</div>
<div class="inputLi">
<button class="" onclick="login()">登录</button>
</div>
</div>
</div>
</body>
</html>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
function login() {
var username = $('.username').val();
var userpassword = $('.userpassword').val();
$.ajax({
url: "http://www.examtest.com/home/login/loginSuccess",
type: "POST",
data: {
username: username,
userpassword: userpassword,
__token__: "{$Request.token}"
},
dataType: "JSON",
success: function (res) {
if (res.code == 510) {
alert(res.message)
}
if (res.code == 400) {
alert('登录失败')
}
if (res.code == 200) {
alert(res.message)
location.href = '/admin/order/order'
} }
}) } </script>
控制器代码:
<?php namespace app\home\controller; use app\home\model\LoginModel;
use think\Controller;
use think\Loader;
use think\Request;
use think\Session;
use think\Validate; class Login extends Controller
{
//登录表单
public static function login()
{
return view();
} // 处理登录的数据
public static function loginSuccess()
{
//接受值
$params = \request()->post();
//验证非空
$rule = [
'username|账号' => 'require',
'userpassword|密码' => 'require',
];
$msg = [
'username.require' => '账号不可以为空',
'userpassword.require' => '密码不可以为空',
];
$validate = new Validate($rule, $msg);
$result = $validate->check($params);
if (!$result) {
return json(['code' => 510, 'message' => $validate->getError()]);
} //与数据库进行对比
$userData = LoginModel::getUserInfo($params);
//session记录 用户信息
Session::set('user', $userData);
if (!$userData) {
return json(['code' => 510, 'message' => '登录失败']);
} else {
return json(['code' => 200, 'message' => '登录成功']);
}
}
}
模型代码:
<?php namespace app\home\model; use think\Model; class LoginModel extends Model
{
//链接数据库表名
protected $table = 'user';
//获取数据库信息与用户信息对比
public static function getUserInfo($params)
{
$username = self::where('username', $params['username'])
->find();
$tel = self::where('tel', $params['username'])
->find();
if ($username) {
return $username;
}
if ($tel) {
return $tel;
}
} }
TP5框架中实现多条件登录(自写代码,密码未md5()加密)的更多相关文章
- TP5框架中实现多条件登录
控制器代码 //登录功能 public function login(){ $data = input(); $validate = $this->validate($data,[ 'uname ...
- Spring-Security (学习记录五)--配置登录时,密码采用md5加密,以及获取登录信息属性监听同步自己想要的登录信息
目录 1. PasswordEncoder 采用密码加密 2. 获取当前的用户信息 1. PasswordEncoder 采用密码加密 使用前面的例子.可以看出我们数据库密码是采用明文的,我们在登录的 ...
- <p>在我们的实际软件项目中,管理团队事实上比写代码或者实现一个客户的需求更为的有挑战性。由于编程实际上是和机器打交道,而和机器打交道,仅仅要你符合机器预定的逻辑,</p>
在我们的实际软件项目中,管理团队事实上比写代码或者实现一个客户的需求更为的有挑战性. 由于编程实际上是和机器打交道.而和机器打交道,仅仅要你符合机器预定的逻辑, 一步步迈向解决这个问题的道路上一点都不 ...
- 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)
最近在写一个C#的项目,用户需求是实现Winform的多文档界面与Matlab算法程序之间的交互.做了一段时间发现,这既能利用业余时间,实战中也可学习一些技术,同时刚毕业也增加一份收入.所以后面会不断 ...
- iOS 中常用的对密码进行MD5加密
iOS中MD5加密 标签(空格分隔): iOS MD5 + (NSString *)MD5:(NSString *)str { const char *cStr = [str UTF8String]; ...
- tp5框架中jquery+ajax分页
jaxa分页,点击按钮直接替换数据, //php代码$page=Request::instance()->param("page"); $page = empty($page ...
- 登录口爆破之ldap的md5加密、验证码认证
ldap的md5加密配合autoDecoder插件.captcha-killer-modified插件 autoDecoder例 需要传入的数据包为: {"username":&q ...
- Git.Framework 框架随手记--ORM条件组合
在上一篇<Git.Framework 框架随手记--ORM新增操作>中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条 ...
- 关于Laravel框架中Guard的底层实现
1. 什么是Guard 在Laravel/Lumen框架中,用户的登录/注册的认证基本都已经封装好了,开箱即用.而登录/注册认证的核心就是: 用户的注册信息存入数据库(登记) 从数据库中读取数据和用户 ...
随机推荐
- netty系列之:选byte还是选message?这是一个问题
目录 简介 类型的定义 搭建UDT stream服务器 搭建UDT message服务器 Stream和Message的handler 总结 简介 UDT给了你两种选择,byte stream或者me ...
- NSLog 和printf区别
NSLog是Foundation框架供的Objective-C日志输出函数,与标准C中的printf函数类似,并可以格式化输出. NSLog传递进去的格式化字符是NSString的对象,而不是char ...
- Docker consul的容器服务更新与发现(超详细配图)
Docker consul的容器服务更新与发现 1.概述 2.部署 1.概述: (1)什么是服务注册与发现: 服务注册与发现是微服务架构中不可或缺的重要组件.起初服务都是单节点的,不保障高可用性,也不 ...
- selenium连接浏览器方式
支持HtmlUnitDriver无头浏览器自动化 定位元素的方式:是可嵌套的 WebElement cheese = driver.findElement(By.id("cheese&q ...
- 基于6U VPX 的mSATA高性能数据存储板
一.板卡概述 该产品系我司自主研发.基于标准6U VPX架构. 二.产品特性 大存储容量8TB 读写方式RAID0 ,读写速率2GB/s 四路x4 SRIO@5Gb ...
- Solution Set - Border Theory
我发现写 Solution Set 就不用写每道题的题意了,岂不美哉? 首先是一些奇妙结论. 定理 1(弱周期定理) 对于字符串 \(S\),若 \(S[:p]\) 和 \(S[:q]\) ...
- Spring 控制反转和依赖注入
控制反转的类型 控制反转(IOC)旨在提供一种更简单的机制,来设置组件的依赖项,并在整个生命周期管理这些依赖项.通常,控制反转可以分成两种子类型:依赖注入(DI)和依赖查找(DL),这些子类型各自又可 ...
- MXNet源码分析 | KVStore进程内通信
本文主要基于MXNet1.6.0版本进行分析. MXNet的KVStore模块下有几个比较重要的类.KVStore是一个抽象类,提供了一些通用的API,例如Init.Push和Pull等.因为KVSo ...
- CentOS8 固定IP无法访问外网问题解决(ping: www.hao123.com: Name or service not known)
CentOS8虚拟机用了一段时间后,需要安装telnet-server服务,却无法正常安装.之前安装ftp服务是没有问题的,安装问题如下: 错误提示,无法下载相关元数据:网上也是0.0B/s.那么可能 ...
- CobaltStrike逆向学习系列(11):自实现 Beacon 检测工具
这是[信安成长计划]的第 11 篇文章 关注微信公众号[信安成长计划] 0x00 目录 0x01 检测原理 0x02 检测方案 0x03 存在的问题 0x04 解决方案 0x05 示例代码 0x06 ...