php网页登录制作,thinkphp5 系统登录的实现
登录功能,是我们几乎开发每个系统都必须的模块。
登录功能设计思路
用户输入网址展示登录页面用户输入用户名,密码等点击登录进行信息校验
校验通过之后,记录用户登录信息,跳转指定页面用户校验失败,提示失败信息
下面功能相关的目录和文件
具体功能实现
登录页面的设计
为了快速搭建可用、美观的页面,我们采用一个比较成熟的前端框架 Bootstrap。下面我们到 Bootstrap的官网
Bootsrap官网下载 bootstrap。本案例下载 v3.3.7。下载完成之后,放到 publicstatic 下改名为 bootstrap。在 applicationindexcontroller 下新建 Login.php<?php
namespace appindexcontroller;
use thinkController;
class Login extends Controller
{
public function index()
{
return $this->fetch();
}
}
在 applicationindexview 新建 login 文件夹,然后在其内新建 index.hml
登录系统
登录
欢迎登录本站(⊙o⊙)
用户名
密码
登 录
访问 www.phper.com/index/login 页面效果如下:
数据库的设计
展示用户登陆的页面有了,那么我们现在来设计一下,存储用户信息的表。首先,我们通过 Navicat,新建一个 数据库 phper 并设计 编码为 UTF8,然后新建 用户表 users:
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`user_name` varchar(155) NOT NULL COMMENT '用户名',
`user_pwd` varchar(50) NOT NULL COMMENT '用户密码',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
在数据库中新建一条数据:
insert into users(`user_name`,`user_pwd`) value('admin','21232f297a57a5a743894a0e4a801fc3');
下面我们就 可以用过这个 admin 进行后面的登录了。密码的 明文是 : admin.。然后我们配置一下 thinkphp5 的数据库设置。在application 下面的 database.php 进行的配置:
>[info] 配置这个数据库文件,那么前台模块 和 后台模块 都能用到这个数据库配置。同样,我们还可以在 admin 和 index 模块下面的 database.php 进行配置,这样可以单独对 index 和 admin 模块起作用。
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'phper',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
// 端口
'hostport' => '3306',
登录功能的具体实现
我们在页面设计的时候可以看到,我给 form 表单的提交地址填写的地址是 login控制的 dologin。因此,我们在 Login.php 中新建 doLogin 方法:
// 处理登录逻辑
public function doLogin()
{
$param = input('post.');
if(empty($param['user_name'])){
$this->error('用户名不能为空');
}
if(empty($param['user_pwd'])){
$this->error('密码不能为空');
}
// 验证用户名
$has = db('users')->where('user_name',$param['user_name'])->find();
if(empty($has)){
$this->error('用户名密码错误');
}
// 验证密码
if($has['user_pwd'] != md5($param['user_pwd'])){
$this->error('用户名密码错误');
}
// 记录用户登录信息
cookie('user_id',$has['id'],3600); // 一个小时有效期
cookie('user_name',$has['user_name'],3600);
$this->redirect(url('index/index'));
}
其中可以看到,登录成功之后,跳转到 index.php 的 index方法,下面我们设计一下 index.php 的 index 方法:
namespace appindexcontroller;
class Index
{
public function index()
{
echo "您好: " . cookie('user_name') . ',退出';
}
}
可见: 您好: admin,退出
退出功能的实现
退出的设计逻辑,就是清除 cookie中的用户登录信息,跳转到登录页面即可。Login.php 的 loginOut 方法:
// 退出登录
public function loginOut()
{
cookie('user_id',null);
cookie('user_name',null);
$this->redirect(url('login/index'));
}
结语
好了,到此一个简单的 登录系统到此就完成了。当然,这个功能非常的简单。从代码中可见,我是通过 cookie 存储登录后的用户信息的。因此,通过判断 cookie 中是否有 用户id 或者 用户名 就可以判断用户是否处于登录状态。我们可以通过这系统给的函数去判断 cookie 中是否有 指定的 key 值。
Cookie::has('name');
虽然这个功能实现了,但是看起来很是简陋,而且系统默认的错误提示很丑陋。下面的章节,我将对着部分功能进行美化。
>[danger] 此处我查询数据库采用的数据库方法,当然,你也可以采用 模型 对数据库进行操作。
转自:https://www.kancloud.cn/phper123/tools/289763
php网页登录制作,thinkphp5 系统登录的实现相关推荐
- Windows登录虚拟机Ubuntu系统登录不成功解决办法(ssh: connect to host 192.168.220.128 port 22: Connection refused)
我在windows端第一次连接自己电脑虚拟机建立的Ubuntu系统时出现如下问题 ssh: connect to host 192.168.220.128 port 22: Connection re ...
- 学生网课网页设计成品 在线视频学习类网页制作 三层结构网页模板 静态HTML注册登录网页模板 学生毕业设计网页制作作品 网校类网页代制做
学生在线网课网页设计 网页知识点 网页作品介绍 网页代码展示 代码展示 登录页面部分代码展示 头部区域代码演示 小导航代码演示 网页效果预览 首页效果 表单页面 详情页面 作品地址 网页知识点 DIV ...
- Linux系统登录相关(命令,应急响应可以用到)
whoami:查看当前用户 who:查看当前登录系统的所有用户 tty指的是主机的图形化界面的面板 pts/x指的是远程ssh连接的窗口 who -b:主机的上一次启动时间 w:显示已经登陆系统的用户 ...
- 怎么样设置关闭网页再次登录网页是正常登录状态_学籍系统出现“该账号已登录,不能重复登录”怎么办?...
学籍系统因保密需要,限定一台电脑只能同时登录一个账号,所以大家在退出学籍系统时,不要直接关闭网页窗口退出系统,这样学籍系统实际仍然在登录状态,当我们重新登录系统时,就会出现提示"该账号已登录 ...
- python注册系统_Python制作简易注册登录系统
Python制作简易注册登录系统 这篇文章主要为大家详细介绍了 Python 简易注册登录系统的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Python 是一种面向对象.解释型计算机程 ...
- 制作一个银行卡登录系统
制作一个银行卡登录系统 {"expire_date":"2021-01-01","id":"1234","st ...
- Unity3D制作3dRPG游戏——登录系统
Unity3D制作3dRPG游戏--登录系统 目录 Unity3D制作3dRPG游戏--登录系统 设定辅助摄像机(登录界面背景) UI界面设计 编写代码GameManage思路过程 代码GameMan ...
- 教你用ERD轻松修改系统登录密码
赛迪网--中国电脑教育报4月12日报道 在机房管理过程中,我们经常会碰到因一时疏忽而忘记了系统超级管理员密码的情况.由于事前没有制作密码重设盘,等发现遗忘密码无法登录时,便后悔莫及.计算机系统分区中没 ...
- spirngmvc如何实现直接输入网页重定向到登录_Python 模拟新浪微博登录
点击上方"小猿学 Python",选择"置顶公众号" 作者:北岛知寒 链接:https://www.cnblogs.com/crazyacking/p/5232 ...
最新文章
- CoCreateInstance 出错 ,返回 -2147221164 CLASS_NOT_REGISTERED ,原因
- nodejs之express -- 1
- (winform cookie)如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证...
- linux命令怎么打开优盘,Linux下U盘使用具体步骤
- 【专访】PP租车孙览江:与有梦想的人一拍即合,PM都有改变世界的小情怀
- android router不起作用,给 Arouter 优化的一些小建议
- java 实现 tcp_java实现TCP通信
- Linux中以单容器部署Nginx+ASP.NET Core
- [转载] Java——数组习题
- ecshop调用文章显示上一篇下一篇_无需整理
- Linux下安装PHP扩展
- word排版遇到的问题
- 【Python实例】获取今日零点的datetime
- 我的VSTO之路(四):深入介绍Word开发
- UVA 11991 Easy Problem from Rujia Liu?
- genymotion报错an error occured while deploying the file解决办法
- 嚣张:分库分表就能无限扩容吗?
- mysql的双井号_C语言中单井号(#)和双井号(##)在宏语句中的应用
- 解秘华为:肯给养出最拼团队
- 怪异的JavaScript系列(一)