thinkphp后台登录实例

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">密 &nbsp; &nbsp;码:</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');
        }
	}
}

 

转载于:https://my.oschina.net/maishe/blog/685206

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
thinkphp是一种开源的PHP开发框架,它提供了丰富的功能和强大的工具,便于开发者构建高效的Web应用程序。thinkphp后台是使用thinkphp框架开发的用于管理网站后台的一套系统。下面我将用300字介绍thinkphp后台的特点和优势。 首先,thinkphp后台具有良好的可扩展性。通过thinkphp的模块化开发和MVC设计模式,后台系统可以很容易地进行扩展和维护。开发人员可以根据实际需求,通过添加新的模块或扩展现有功能,实现对系统的定制和功能增强。 其次,thinkphp后台提供了丰富的开发工具和快速的开发流程。它提供了强大的数据操作和数据库工具,可以快速、稳定地连接和操作数据库。同时,它拥有完善的路由和URL重写机制,使得开发者可以方便地管理系统的URL结构和访问规则。 另外,thinkphp后台还具备灵活的权限管理和安全性保障。它提供了丰富的权限控制机制,可以对系统的不同模块和功能进行细粒度的权限设置,确保系统的安全性和数据的保密性。同时,它还提供了强大的表单验证和安全过滤机制,有效防止恶意攻击和数据注入。 最后,thinkphp后台还拥有友好的开发文档和强大的开发社区支持。官方提供了详细的开发手册和API文档,开发者可以很轻松地学习和使用该框架。同时,thinkphp拥有庞大的开发者社区,开发者们可以在社区中交流经验、解决问题,共同推动该框架的发展。 总而言之,thinkphp后台是一套功能强大、灵活可扩展的网站后台管理系统。通过使用该系统,开发人员可以轻松构建高效、安全的后台系统,并快速响应业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值