session('username',$username);取:session('username');2_检查是否设置了某些session:session('?username')---------------------------以下是正文---------------------------<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为空就是提交到本页面或默认页面,此处为本页面<? 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();显示登录界面;<include file="Public/n_head"/>
<body>
...
...首页用了include,导致IndexController.class.php无法直接用$this->assign();赋值,给判断用户是否登录带来了麻烦,所以......
...
<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>
...
... 接着是注销:...
...
/* 退出登录 */
public function logout(){
if(is_login()){
//D('Member')->logout();
session('username',null);
session('[destroy]');
$this->success('退出成功!', U('/Index/index'));
} else {
$this->redirect('/Index/index');
}
}
...
...
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。