ThinkPHP判断是否登录

在开发WEB后台时,在每个页面都需要判断当前是否处于登录状态。通常情况下会判断是否存在指定的SESSION,如果存在则认为是已经登录,如果不存在则认为没有登录,那么需要跳转到登录页面。

如果在每个页面中都写一段判断是否登录的代码,那么就非常的繁琐了。但是如果使用面向对象的继承特性,那么实现起来就非常的容易了。下面是使用ThinkPHP来简单实现一个判断是否登录的例子。

首先,写一个控制器,代码如下:

<?php
namespace Home\Controller;
use Think\Controller;

class AuthController extends Controller {
    public function __construct() {
        if ( !isset($_SESSION[‘username‘]) || $_SESSION[‘username‘] == ‘‘ ) {
            $this->redirect(‘Index/index‘, array(), 3, ‘您尚未登录,正在跳转至登录页面...‘);
        }
        // 在这里必须调用父类的构造函数
        parent::__construct();
    }
}

这个控制器继承了ThinkPHP的Controller类,然后在构造函数__construct()中判断是否存在$_SESSION[‘username‘]这个session值,如果不存在则表示没有登录,那么就通过$this->redirect()进行跳转。

如果存在的话,那么就说明已经登录了,那么就调用父类的构造函数,如果不调用父类的构造函数,那么这个控制器再被其他控制器继承以后是会报错的。

写好这个控制器以后,然后让具体的控制器来继承它,代码如下:

<?php
namespace Home\Controller;
use Think\Controller;
class MainController extends AuthController {
    public function index() {
        $this->display();
    }
}

让MainController继承AuthController类,那么在调用MainController这个控制器时,按照类的实例化顺序,会先实例化AuthController类,在AuthController的构造函数中则会判断是否登录了。

在写其他后台控制器时,也同样继承AuthController这个类,就都会先判断是否登录了。当然了,在写登录页面的控制器时,就不能继承AuthController这个类了。登录页面的控制器直接继承Controller类即可。

时间: 2024-10-13 00:54:06

ThinkPHP判断是否登录的相关文章

ThinkPHP实现用户登录

ThinkPHP实现用户登录 ? //默认url入口 ? class IndexAction extends Action{ function index() { //检查用户是否登录 if(isset($_SESSION['member'])) //跳转到首页 echo 'welcome to index'; else{ //跳转到登录页面 echo "<script>window.location.href='index.php/member/login/';</scrip

ASP.NET MVC下判断用户登录和授权的方法

日常开发的绝大多数系统中,都涉及到管理用户的登录和授权问题.登录功能(Authentication),针对于所有用户都开放:而授权(Authorization),则对于某种用户角色才开放. 在asp.net mvc中,微软虽然已经帮助开发者构建了ASP.NET Identity这样强大的验证授权框架,但是如果想定制更多的逻辑功能的话,还得自己动动手. 根据日常的开发经验,我总结了下面1种方法: 1 学习了很多人的代码后,发现在Controller里有一个OnActionExecuting方法,此

ASP.NETMVCView页面内判断是否登录

直接写这个判断即可 @if (Request.IsAuthenticated) { <text> 你好,@Html.ActionLink(User.Identity.Name, "Manage", "Account", routeValues: null, htmlAttributes: new { @class = "username", title = "管理" })! @using (Html.BeginFo

vue 判断是否登录,未登录跳转到登录页

网页一进入判断是否登录,未登录跳转到登录页面 router.js export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld, meta: { title: '首页', requiresAuth: true // 是否需要判断是否登录 } }, { path: '/login', name: 'login', component: login, meta: { title

实战3--应用EL表达式判断用户登录信息

1.判断用户名是否为空,空则显示提示信息 (1)编写index.jsp页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w

springmvc3 拦截器,过滤ajax请求,判断用户登录,拦截规则设置

web.xml设置:(/拦截所有请求) <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name&

discuz判断用户登录

    在include/common.inc.php 文件.程序开始先判断是否有cookie存到了sid值,然后解密cookie['auth']这个用户登录状态加密字符串,如果解密出来有uid值表示用户已登录.接下来是想要得到用户的基本信息.如果有uid则直接到members表查,如果没有,则根据是否有sid值要不要到sessions表查找(如果有sid,则到sessions查,因为在页面执行过程中footer.html模板执行 了updatesession函数,这个函数是记录在线用户的,已s

如果是判断是否登录拦截器

package com.ccsu.common.filter; import com.ccsu.common.constants.SessionConstants; import com.ccsu.entity.userSystem.User; import com.ccsu.util.userSystem.ProsReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework

thinkphp判断是否为手机

一.问题: 近日准备给自己的网站做一个小升级,让用户在手机二维码扫描的时候显示适合手机端来展示的模版[我用的是ThinkPHP3.0],代码是参考别人的 二.实现方法: 这里先说下大概的一个思路 简单两步: 统版本号和浏览器以及它的版本号(贴出的代码中数组中只有移动端信息,因此后面只需判断是否为数组中的某一个值即可). 根据数组中的值来判断访客是否为手机.pad.之类的移动端,如果是的话就规定项目路径.名称为你的手机端模版如 复制代码 代码如下: define('APP_NAME','mobi'