thinphp5怎么在入口文件里写入session?

发布于 2022-09-07 00:00:41 字数 825 浏览 15 评论 0

因为想创建多一个管理入口,这样方便修改入口文件名字。

在 app\admin\contrller\Login 里写了先判断是否从入口进入

Login:

<?php
namespace app\admin\controller;
use think\Controller;

class Login extends Controller
{
    public function index(){
        if (!session('AdminLogin')) {
            header("Content-Type:text/html; charset=utf-8");
            $this->error('请从后台管理入口登录');
        }
        if (session('app.USER_AUTH_KEY')) {
            $this->redirect(url('/admin'));
        }
        return view();
    }
}

目的是当用户访问 admin.php 这个入口文件的时候,直接给一个session,这样就能判断是否从入口文件进入的。
但是入口文件里不能直接使用 TP5 的 session() ,如果用 PHP 的$_SESSION

@session_start();
$_SESSION['AdminLogin'] = 1;

那样 Login 里使用 session('AdminLogin') 就会无法获取。
入口文件里应该怎样才能使用 tp5 的 session() ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

柠檬色的秋千 2022-09-14 00:00:41

谢邀,题主的大概思路我了解了一下,想要确认用户的从哪个入口文件进入,楼上的说的也都是正确的.@熊猫桑,@上官元恒 说的都是有道理的.但是我不是很赞成题主的想法,session函数是要自动加载过后才能执行的.它是在引入helper.php这个文件后才有,至于引入规则可以看一下\thinkphp\library\App.php中的init方法.所以要使用session函数可以在入口文件作出如下更改

$app = Container::get('app')->bind('模块名');
$app->initialize();
// 这里写你要用的session方法.
$app->run()->send();

来了,在app->run方法中,又执行了一次initialize方法.就执行了两次initialize.这样一个程序的执行效率就低了.
那为什么不换一个思路.以下这个是我的思路.通过$_SERVER中的script_name来获取对应的入口文件名字.用于判断用户是否从入口文件进入.

<?php
namespace app\admin\controller;
use think\Controller;

class Login extends Controller
{
    public function index(){
        if ($this->request->server('SCRIPT_NAME') != '/' . '入口文件名字如:admin.php') {
            header("Content-Type:text/html; charset=utf-8");
            $this->error('请从后台管理入口登录');
        }
        
        if (session('app.USER_AUTH_KEY')) {
            $this->redirect(url('/admin'));
        }
        return view();
    }
}
清音悠歌 2022-09-14 00:00:41

谢邀,可我没接触过ThinkPHP……但我觉得session还是应该放默认控制器里吧?入口文件里放全局的东西就好。当然如果能上RBAC之类的东西就最好~(这句不一定对。。)

尸血腥色 2022-09-14 00:00:41

你可以看看tp中session函数源码, 是否有前缀.

感性 2022-09-14 00:00:41

因为session()是之后加载的啊

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文