搜索
系统检测到您的用户名不符合规范:

ThinkPHP 3.2.3的登陆及注销(小白版)

浏览:10417 发布日期:2015年09月09日 分类:技术分享 关键字: 登陆 注销
不得不说,这是个超简单的操作,但对于不是很了解框架结构的小白(比如我),还是要郁闷很久的
首先,方法论基本都知道,不就是对session(请允许我忽略cookie)的操作么?问题是那些细节问题。
1_改版后3.1之前的教程基本阵亡,session的存取简单了:
存:session('username',$username);取:session('username');2_检查是否设置了某些session:session('?username')---------------------------以下是正文---------------------------

首先是form表单的提交,
login.html:<form action="" method="post">
<input type="text" name="account" class="input" value="" id="loginUsername" placeholder="用户名">
<input type="password" name="passwd" class="input erro" value="" id="loginPwd" placeholder="密码">
</form>
action为空就是提交到本页面或默认页面,此处为本页面
UserController.class.php:<? php
namespace Home\Controller;
use User\Api\UserApi;//有关注册登录验证的模块,此处不予展示了
class UserController extends HomeController {

public function index(){

}
...
...
/* 登录页面 */
public function login($username = '', $password = '', $verify = ''){
if(IS_POST){ //登录验证

/* 调用UC登录接口登录 */
$username = I('post.account');
$password = I('post.passwd');
$user = new UserApi;
$uid = $user->login($username, $password);//获取数据库中保存的用户ID

if(0 < $uid){ //UC登录成功
/* 登录用户 */
$Member = D('Member');
if($Member->login($uid)){ //登录用户
//将用户名存入session
session('username',$username);
//TODO:跳转到登录前页面
$this->success('登录成功!',U('/Index/index'));
} else {
$this->error($Member->getError());
}

} else { //登录失败
switch($uid) {
case -1: $error = '用户不存在或被禁用!'; break; //系统级别禁用
case -2: $error = '密码错误!'; break;
default: $error = '未知错误!'; break; // 0-接口参数错误(调试阶段使用)
}
$this->error($error);
}

} else { //显示登录表单
$this->display();
}
}
...
...
分析:当点击登陆时,会调用login(),检测是否接收到了表单提交的数据(上面的action为空就是提交到这儿了),因为还未提交表单,故False,执行$this->display();显示登录界面;
当提交表单后,又一次执行login(),检测到数据,调用I()取值,然后判断是否存在此用户及密码是否正确,如果都正确将用户名存入session

然后就跳转到首页:<include file="Public/n_head"/>
<body>
...
...
首页用了include,导致IndexController.class.php无法直接用$this->assign();赋值,给判断用户是否登录带来了麻烦,所以...
n_head.html:...
...
<php>if (session('?username') != null){</php>
<div class="htitle_user fl"> <b>{$Think.session.username}</b> 您好,欢迎! <a href="/user/logout">注销</a> </div>
<php>} else {</php>
<div class="htitle_user fl"> 您好,欢迎!请<a href="/user/login">登录</a><span>或</span><a href="/user/register">免费注册</a> </div>
<php>}</php>
...
...
接着是注销:
UserController.class.php:...
...
/* 退出登录 */
public function logout(){
if(is_login()){
//D('Member')->logout();
session('username',null);
session('[destroy]');
$this->success('退出成功!', U('/Index/index'));
} else {
$this->redirect('/Index/index');
}
}
...
...
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
ZeronoFreya
积分:531 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /