think php 登录 (session+验证码)
、、、、、、、、、、表单页面
<!DOCTYPE html>
{__NOLAYOUT__}
<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>
<form action="/goods/login/save" method="post">
<div class="login">
<div class="center">
<h1>Login</h1>
<div class="inputLi">
<strong>账户</strong>
<input type="text" placeholder="账户" name="account">
</div>
<div class="inputLi">
<strong>密码</strong>
<input type="password" placeholder="密码" name="password">
</div>
<div class="inputLi">
<strong>验证码</strong>
<input type="text" placeholder="" name="cord">
<img src="{:captcha_src()}" name="img" onclick="this.src='{:captcha_src()}'"
>
</div>
<div class="inputLi">
<button type="submit">登录</button>
</div>
</div>
</div>
</form>
</body>
</html>
、、、、、、、、、、、、、、控制器验证‘
public function create()
{
//goods/login/create
//通过域名/模块名/控制器名/方法名访问登录页面
return view();
} /**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save(Request $request)
{
//
$params = $request->param();
//验证参数、非空
$rule = [
'account' => 'require',
'password' => 'require',
'cord' => 'require',
];
$tips = [
'account.require' => '账号不可以为空',
'password.require' => '密码不可以为空',
'cord.require' => '验证码不可以为空',
];
$validate = new Validate($rule, $tips);
$result = $validate->check($params);
if (!$result) {
$this->error($validate->getError());
}
//数据库验证参数
$data = GoodModel::login($params);
//验证账号
if ($params['account'] != $data['name']) {
$this->error('账号错误', '/goods/login/create');
}
//验证密码
if (md5($params['password']) != md5($data['password'])) {
$this->error('密码错误', '/goods/login/create');
}
//验证码进行验证
if (!captcha_check($params['cord'])) {
$this->error('验证码输入错误', '/goods/login/create');
};
if ($data){
//记录session
session('name',$data['name']);
$this->success('登录成功', '/goods/goods/index');
} }
。。。。。。。。。。。。。。。。模型页面
<?php namespace app\goods\model; use think\Model; class GoodModel extends Model
{
//
protected $table='login';
public static function login($params){
return self::where('name',$params['account'])->find(); }
}
。。。。。。。。。。。。。。。。。。。。



’
think php 登录 (session+验证码)的更多相关文章
- .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现
前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...
- Java模拟登录带验证码的教务系统(原理详解)
一:原理 客户端访问服务器,服务器通过Session对象记录会话,服务器可以指定一个唯一的session ID作为cookie来代表每个客户端,用来识别这个客户端接下来的请求. 我们通过Chrome浏 ...
- php使用curl模拟登录带验证码的网站[开发篇]
需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...
- Maven + SSM + Kaptcha 实现用户登录时验证码的获取(问题:302 Found)
pom.xml(对Kaptcha.jar的引用) <!-- 验证码 jar kaptcha--> <dependency> <groupId>com.github. ...
- php使用curl模拟登录带验证码的网站
需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下! <?php namespace Home\ ...
- python接口自动化三(登录绕开验证码及发帖)
前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 但是这里需要明确 ...
- 使用C#登录带验证码的网站
我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现,很多人问到对于使用了验证码的网站该怎么办,这里我就讲讲验证码的原理和对应的登录方法.验证码的由来几年前,大部分网站.论坛之类的是没有验证码 ...
- 三:Spring Security 登录添加验证码
Spring Security 登录添加验证码 1.准备验证码 2.自定义过滤器 3.配置 1.准备验证码 要有验证码,首先得先准备好验证码,本文采用 Java 自画的验证码,代码如下: /** * ...
- 网站启动SSL, http变为https后,session验证码错误解决方法
网站启动SSL, http变为https后,session验证码错误解决方法 最近公司需要后台启动安全证书,证书安装完毕后,后台老提示 验证码错误,经过几天的研究,此问题已经得到有效解决,现把方法 ...
- nodejs:注册登录session出错以及连接Mongodb数据库时Error connecting to database解决方案
(1)nodejs:注册登录session出错 解决办法: 在app.js 中将var MongoStore = require(connect-mongo')改为var MongoStore = ...
随机推荐
- @Resource注解和@Autowired注解
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11770982.html 1. @Resource 类来源: javax(Java扩展包) 类全 ...
- k8s之list-watch机制、节点调度以及亲和性
k8s之list-watch机制.节点调度以及亲和性 目录 k8s之list-watch机制.节点调度以及亲和性 一.list-watch机制 1. list-watch介绍 2. list-watc ...
- Redis常用数据类型以及操作
Redis常用数据类型以及操作 目录 Redis常用数据类型以及操作 一.String数据类型 1. SET/GET/APPEND/STRLEN 2. INCR/DECR/INCRBY/DECRBY ...
- 【BZOJ2654】tree(生成树 二分)
题目链接 大意 给你一个无向带权连通图,每条边是黑色或白色,求一棵最小权的恰好有\(Need\)条白色边的生成树. 题目保证有解,输出最小权值. 其中每条边权在\([1,100]\)范围内. 思路 首 ...
- [GWCTF 2019]babyvm re
BABYVM 基于虚拟机操作的一个题 明面上的check函数和加密逻辑都是假的 操作码 重点分析这个vm 0xF5, 0xF1, 0xE1, 0x00, 0x00, 0x00, 0x00, 0xF2, ...
- Spring Boot-开启第一步
Spring Boot开发的目的是为了简化Spring应用的开发,使用Spring Boot可以零配置开启一个Spring应用.这得益于Spring Boot中的自动配置组件,如果开发者觉得默认的配置 ...
- 加密模块hashlib+日志模块logging
目录 1.hashlib 加密模块 1.hashlib模块基本使用 1.2 详细操作 ①md5加密模式 ②sha256复杂加密模式 ③加盐操作(普通加盐) ④加盐操作(动态加盐) 2.logging ...
- 3、Linux基础--cp、mv、rm、alias、vi/vim命令
笔记 1.考试 1.判断网络是否通畅的命令 ping 2.定义系统提示组成的变量 PS1 3.Linux中目录从什么开始 根(/) 4.系统中目录路径类型有哪些,解释一下 绝对路径:以根目录作为参照物 ...
- Spring高级特性之一: Aware之ApplicationContextAware
关于Spring Aware之前似乎涉及过,但是未写过单独的小作文.这里为它专门写个小作文吧,关于它在自定义注解中的应用. 首先,概要介绍下Aware. Spring的依赖注入的最大亮点就是你所有的B ...
- IPMI日常使用
重启ipmi: ipmitool mc reset <warm|cold> warm表示软重启: cold表示硬重启: 设置IPMI地址: ipmitool lan set 1 i ...