1、入口文件:index.php
<?php
// 检测PHP环境
if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');
// 调试模式
define('APP_DEBUG',True);
// 应用目录
define('APP_PATH','./Application/');
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php';
2、配置文件
<?php
return array(
//'配置项'=>'配置值'
'URL_HTML_SUFFIX' => '',
/* 数据缓存设置 */
'DATA_CACHE_PREFIX' => 'onethink_', // 缓存前缀
'DATA_CACHE_TYPE' => 'File', // 数据缓存类型
/* 模板相关配置 */
'TMPL_PARSE_STRING' => array(
'__STATIC__' => __ROOT__ . '/Public/static',
'__ADDONS__' => __ROOT__ . '/Public/' . MODULE_NAME . '/Addons',
'__IMG__' => __ROOT__ . '/Public/' . MODULE_NAME . '/images',
'__CSS__' => __ROOT__ . '/Public/' . MODULE_NAME . '/css',
'__JS__' => __ROOT__ . '/Public/' . MODULE_NAME . '/js',
),
/* SESSION 和 COOKIE 配置 */
'SESSION_PREFIX' => 'blog', //session前缀
'COOKIE_PREFIX' => 'blog_', // Cookie前缀 避免冲突
'VAR_SESSION_ID' => 'session_id', //修复uploadify插件无法传递session_id的bug
/* 后台错误页面模板 */
'TMPL_ACTION_ERROR' => MODULE_PATH.'View/Public/error.html', // 默认错误跳转对应的模板文件
'TMPL_ACTION_SUCCESS' => MODULE_PATH.'View/Public/success.html', // 默认成功跳转对应的模板文件
'TMPL_EXCEPTION_FILE' => MODULE_PATH.'View/Public/exception.html',// 异常页面的模板文件
);
3、登录页面:login.html
<form class="form-horizontal" action="{:U('login','','')}" role="form" method="post">
<div class="form-group">
<label for="username" class="col-sm-offset-1 col-sm-2 control-label">用户名:</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="username" name="username" placeholder="用户名" required />
</div>
</div>
<div class="form-group">
<label for="password" class="col-sm-offset-1 col-sm-2 control-label">密 码:</label>
<div class="col-sm-6">
<input type="password" class="form-control" id="password" name="password" placeholder="密码" required />
</div>
</div>
<div class="form-group">
<label for="verify" class="col-sm-offset-1 col-sm-2 control-label">验证码:</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="verify" name="verify" placeholder="验证码" required />
</div>
</div>
<div class="form-group">
<label for="" class="col-sm-offset-1 col-sm-2 control-label"></label>
<div class="col-sm-6">
<img src="{:U('verify')}" class="verifyimg reloadverify"/>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-7">
<button id="submit" type="submit" class="btn btn-primary btn-login">登陆</button>
</div>
</div>
<div class="form-group">
<p class="check-tips text-danger col-sm-offset-3 col-sm-7"></p>
</div>
</form>
<script>
//表单提交
$(document)
.ajaxStart(function(){
$("button:submit").attr("disabled", true);
})
.ajaxStop(function(){
$("button:submit").attr("disabled", false);
});
$("form").submit(function(){
var self = $(this);
$.post(self.attr("action"), self.serialize(), success, "json");
return false;
function success(data){
if(data.status){
window.location.href = data.url;
} else {
self.find(".check-tips").text(data.info);
//刷新验证码
$(".reloadverify").click();
}
}
});
$(function(){
//初始化选中用户名输入框
$("#login").find("input[name=username]").focus();
//刷新验证码
var verifyimg = $(".verifyimg").attr("src");
$(".reloadverify").click(function(){
if( verifyimg.indexOf('?')>0){
$(".verifyimg").attr("src", verifyimg+'&random='+Math.random());
}else{
$(".verifyimg").attr("src", verifyimg.replace(/\?.*$/,'')+'?'+Math.random());
}
});
});
</script>
4、登录处理:LoginController.class.php
public function login($username = null, $password = null, $verify = null){
if(IS_POST){
/* 检测验证码 TODO: */
if(!check_verify($verify)){
$this->error('验证码输入错误!');
}
$db = M('user');
$map['username'] = $username;
$map['status'] = 1;
$user = $db->where($map)->find();
if(!$user){
$this->error('帐号不存在或被禁用');
}
if($user['password'] != md5($password)){
$this->error('密码错误');
}
$data = array(
'uid' => $user['uid'],
'login' => array('exp', '`login`+1'),
'last_login_time' => NOW_TIME,
'last_login_ip' => get_client_ip(),
);
$db->save($data);
/* 记录登录SESSION和COOKIES */
$auth = array(
'uid' => $user['uid'],
'username' => $user['nickname'],
'last_login_time' => $data['last_login_time'],
);
session('user', $auth);
$this->success('登录成功!', U('Index/index'));
} else {
if(is_login()){
$this->redirect('Index/index');
}else{
$this->display();
}
}
}
/* 退出登录 */
public function logout(){
if(is_login()){
session('user', null);
session('[destroy]');
$this->success('退出成功!', U('login'));
} else {
$this->redirect('login');
}
}
public function verify(){
ob_end_clean();
$verify = new \Think\Verify();
$verify->entry();
}
// 检测输入的验证码是否正确,$code为用户输入的验证码字符串
function check_verify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
5、判断是否登录公共方法
/**
* 检测用户是否登录
* @return integer
*/
function is_login(){
$user = session('user');
if (empty($user)) {
return 0;
} else {
return $user['uid'];
}
}
6、公共控制器
class CommonController extends Controller {
public function _initialize(){
// 获取当前用户ID
define('UID',is_login());
if( !UID ){// 还没登录 跳转到登录页面
$this->redirect('Public/login');
}
}
}