在Session_start之后PHP会话活动,但在函数中没有活动?

时间:2016-08-22 14:53:53

标签: php session

我遇到了一些我无法弄清楚的会话问题。 我有一个在index.php开头加载的类。 (下面的代码是摘录,但是第一个执行的代码)。 如果用户注销,我尝试销毁会话,此时我得到“试图在session_start之后销毁未初始化的会话”错误。 如果用户没有注销,我访问会话变量没有问题。 在尝试确定原因时,我添加了代码来检查session_status并在session_start()之后立即找到PHP_SESSION_ACTIVE,但是当我再次在session_destroy()之前检查unsetSession函数中的session_status时,我发现会话未处于活动状态。怎么可能?

class UserAccess
{
    public function __construct($page)
    {
            session_start();

        if ($page == 'logout') {
            $this->logout();
        } else {
            $this->checkSession();
        }
    }

    private function unsetSession()
    {
        session_destroy();
    }

    private function logout()
    {
         $this->unsetSession();
    }

Index.php:
<?php
define ('BASE_DIR',  __DIR__ . '/');
include("includes/config.php");
include(INCLUDE_DIR . 'autoload.inc.php');

//** Get Target Page
$current_page_uri = HTMLSPECIALCHARS($_SERVER['REQUEST_URI']);
$path = parse_url($current_page_uri, PHP_URL_PATH);
$part_url = explode("/", $path);
$page = end($part_url);

$DB = DB::dbConnection();
$UserAccess = new UserAccess($page);

0 个答案:

没有答案