基于ThinkPHP的开发笔记3-登录功能(转)
1、前台登录用的form
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<form id='form_login' action="{:U('runLogin')}" method="post"> <div class="row"> <label class="field">登陆名 </label> <div class="item"> <input id="address" class="basic-input" name="uname" maxlength="70" size="46"/> </div> </div> <div class="row"> <label class="field">密码 </label> <div class="item"> <input id="pwd" class="basic-input" type="password" name="pwd" maxlength="70" size="46"/> </div> </div> <div class="row"> <div class="item"> <input type="checkbox" name='auto' class='auto' id='auto' checked='1'/> <label for="auto">记住我,下次自动登录</label> </div> </div> <hr class="hrline"/> <div class="row footer"> <div class="item"> <input class="loc-btn" type="button" id="submit_form" value="提交"/> <input class="lnk-flat" type="button" id="cancel_form" value="取消"/> </div> </div></form> |
2、后台验证用户名密码,如果登录成功则写入session和cookie,如果cookie不设置失效时间,默认是关闭全部浏览器时失效
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public function runLogin(){ if(!$this->isPost()){ halt('页面不存在'); } $uname=I('post.uname'); $pwd=I('post.pwd','','md5'); $auto=I('post.auto'); $condition = array( 'uname' => $uname, 'pwd'=> $pwd ); $user=M('User')->where($condition)->find(); if($user){ $uid=$user[id]; if($user[nickname]){ $uname=$user[nickname]; } session('uid',$user[id]); session('uname',$uname); if($auto=='on'){ cookie('uid',$uid,30*24*3600); cookie('uname',$uname,30*24*3600); } header('Content-type:text/html;Charset=UTF-8'); redirect(__APP__); }else{ header('Content-type:text/html;Charset=UTF-8'); redirect(U('login'),2,'用户名或密码错误,正在跳转回登陆页...'); }} |
3、首页控制器判断session或者cookie是否存在
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php// 首页控制器class IndexAction extends Action { public function index(){ $data=session('uname'); if($data){ $this->data = $data; }else if(cookie('uname')){ $this->data = cookie('uname'); } $this->display(); }} |
4、首页页面模板中,使用标签判断用户信息,显示不同的内容
|
1
2
3
4
5
6
7
8
9
|
<div id='login' class='right'> <empty name="data"> <a href='{:U('Login/login')}'>登录</a> <a href='{:U('Login/register')}'>注册</a> <else/> <a href='#'>欢迎 {$data}</a> <a href='{:U('Login/logout')}'>注销</a> </empty> </div> |
5、注销登录
|
1
2
3
4
5
6
7
|
public function logout(){ session('uid',null); session('uname',null); cookie('uid',null); cookie('uname',null); redirect(__APP__);} |
基于ThinkPHP的开发笔记3-登录功能(转)的更多相关文章
- Android学习笔记_65_登录功能本身没有任何特别
对于登录功能本身没有任何特别,使用httpclient向服务器post用户名密码即可.但是为了保持登录的状态(在各个Activity之间切换时要让网站知道用户一直是处于登录的状态)就需要进行cooki ...
- ThinkPHP开发笔记-用户登录注册
1.修改模块配置,Application/当前模块名/Conf/config.php <?php return array( //数据库配置信息 'DB_TYPE' => 'mysql', ...
- 实现基于dotnetcore的扫一扫登录功能
第一次写博客,前几天看到.netcore的认证,就心血来潮想实现一下基于netcore的一个扫一扫的功能,实现思路构思大概是web端通过cookie认证进行授权,手机端通过jwt授权,web端登录界面 ...
- 《ArcGIS Runtime SDK for .NET开发笔记》--三维功能
介绍 在ArcGIS Runtim SDK for .NET 10.2.6中,新添加了三维地图功能.在ArcGIS中,我们将三维地图称为Scene(场景),所以在Runtime SDK SDK for ...
- 齐博软件 著名的老牌CMS开源系统 X1.0基于thinkphp开发的高性能免费开源PHP开放平台齐博x1.0基于thinkphp框架开发的高性能免费开源系统 主推圈子 论坛 预定拼团分销商城模块
齐博X1--标签变量大全 1.网站名称: {$webdb.webname} 2.网址: {$webdb[www_url]} {:get_url('home')} 3.网站SEO关键词: 首页:{$we ...
- 基于thinkphp的uploadify上传图功能
php Action server端 <?php /* * To change this template, choose Tools | Templates * and open the ...
- JFinal使用笔记3-注册和登录功能开发记录
首页 开源项目 问答 代码 博客 翻译 资讯 移动开发 招聘 城市圈 当前访客身份:游客 [ 登录 | 加入开源中国 ] 当前访客身份: 游客 [ 登录 | 加入开源中国 ] 软件 土龙 关注 ...
- 基于SpringBoot从零构建博客网站 - 整合ehcache和开发注册登录功能
对于程序中一些字典信息.配置信息应该在程序启动时加载到缓存中,用时先到缓存中取,如果没有命中,再到数据库中获取同时放到缓存中,这样做可以减轻数据库层的压力.目前暂时先整合ehcache缓存,同时预留了 ...
- 基于IntelliJ IDEA开发工具搭建SSM框架并实现页面登录功能详细讲解二
接: 接下来配置类 UserController package com.chatRotbot.controller; import com.chatRotbot.model.User; import ...
随机推荐
- C语言细节注意
前段时间用C语言写了个小的程序,也算是复习了下好久没有用的C语言.也是有好多的坑了,哈哈. 1.C语言的结构体 结构体的命名最好能够做到规范.因为不同的 编译环境下,不是很规范的命名有时候会导致莫名其 ...
- [SHOI2013]发微博
Description 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ! x 表示用户x发了一条微博: + x y 表示用户x ...
- Dispatcher initialization failedUnable to load configuration 解决办法
检查<package name="action" extends="struts-default"></package>中是否有exte ...
- 智课雅思词汇---二十四、名词性后缀ary(也是形容词后缀)
智课雅思词汇---二十四.名词性后缀ary(也是形容词后缀) 一.总结 一句话总结:很多词缀即是名词词缀也是形容词词缀,很多词即是名词也是形容词 1.名词性后缀-tude? 词根词缀:-tude [来 ...
- CSS3 网格布局(grid-layout)基础知识 - 网格模板属性(grid-template)使用说明
CSS3引入了新的网格布局(grid layout),以适应显示和设计技术的发展(尤其是移动设备优先的响应式设计). 主要目标是建立一个稳定可预料且语义正确的网页布局模式,用来替代过往表现不稳定且繁琐 ...
- 使用Selenium通过浏览器对网站进行自动化测试和相关问题
使用Selenium通过浏览器对网站进行自动化测试 自动化测试概念: 一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件. 广义上来讲 ...
- lightoj1234调和级数+欧拉常数
数据比较小时直接算,数据比较大时用公式1+1/2+...+1/n=inn+C+1/(2*n) ,C是欧拉常数0.5772156649 刚开始用的这个1+1/2+...+1/n=in(n+1)+C, ...
- 牛客比赛-Wannafly9-A/B/C
A-链接:https://www.nowcoder.com/acm/contest/71/A来源:牛客网 给定n个正整数,请找出其中有多少个数x满足:在这n个数中存在数y=kx,其中k为大于1的整数 ...
- 51nod1293 dp
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1293 1293 球与切换器 题目来源: Codility 基准时间限制: ...
- 【Java】对象的创建过程
一.对象的创建过程 1.首次创建对象时或该类静态方法/静态域首次被访问时,JAVA解释器查找该类的路径,定位该类的class文件 2.载入该类的class文件,有关静态初始化的所有动作执行,但是只执行 ...