基于ThinkPHP的开发笔记3-登陆功能

一、前台登陆用的form
<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>
二、后台验证用户名密码,若是登陆成功则写入session和cookie,若是cookie不设置失效时间,默认是关闭所有浏览器时失效
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,'用户名或密码错误,正在跳转回登录页...');
	}
}
三、首页控制器判断session或者cookie是否存在
<?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();
    }
}
四、首页页面模板中,使用标签判断用户信息,显示不一样的内容
<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>
五、注销登陆
public function logout(){
	session('uid',null);
	session('uname',null);
	cookie('uid',null);
	cookie('uname',null);
	redirect(__APP__);
}
相关文章
相关标签/搜索