php判断有没有登录,请问thinkphp 怎么在每个方法里面判断是否登录?
[tp版本3.2.3]
我在Controller里面寫了一個公共類CommonController.class.php,寫了一個構(gòu)造方法來判斷是否登錄,沒登錄就重定向到登陸頁:
namespace Admin\Controller;
use Think\Controller;
class CommonController extends Controller
{
public function __construct()
{
$isLogin = session('islogin');
if (!$isLogin) {
$this->redirect('Login/index');
return;
} else {
session('islogin', $isLogin); // 如果登錄刷新一下?不知道是不是這樣去刷新,因?yàn)榭赡艹霈F(xiàn)登錄了后過期的情況。
}
}
}
這樣做有一個問題,就是沒有登錄的時候始終會重定向。報錯127.0.0.1 將您重定向的次數(shù)過多。
于是我改成了
class CommonController extends Controller
{
public function isLogin()
{
$isLogin = session('islogin');
if (!$isLogin) {
$this->redirect('Login/index');
return;
} else {
session('islogin', $isLogin); // 如果登錄刷新一下?不知道是不是這樣去刷新
}
}
}
接著在其它繼承CommonController的文件每一個都去加一個構(gòu)造函數(shù),如
ArticleController.class.php
namespace Admin\Controller;
use Think\Controller;
class ArticleController extends CommonController
{
function __construct()
{
parent::isLogin(); // 這樣寫會報錯,不知道為什么,報錯提示如下
}
public function dolist()
{
$this->show("hallo world");
}
}
報錯提示:
Call to a member function display() on null
錯誤位置
FILE: X:\domainX\ThinkPHP\Library\Think\Controller.class.php LINE: 69
最后這樣寫才不報錯:
namespace Admin\Controller;
use Think\Controller;
class ArticleController extends CommonController
{
public function dolist()
{
parent::isLogin(); // 這樣寫
$this->show("hallo world");
}
}
問題:
為什么繼承CommonController.class.php的類也不能再__construct里面判斷呢?
繼承CommonController.class.php的類如果都要判斷是否登錄,就需要在每一個方法里面寫parent::isLogin();,這樣做合理嗎?還是說這樣做本來就是合理的?
總結(jié)
以上是生活随笔為你收集整理的php判断有没有登录,请问thinkphp 怎么在每个方法里面判断是否登录?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql1846错误_远程连接MySQ
- 下一篇: php开发添加表情功能,WordPres