0

我正在开发一个简单的匿名登录系统,我有一个Session如下所示的类:

<?php

class Session
{
    private static $cookieLifeSpanInDays;

    public function __construct()
    {
        self::$cookieLifeSpanInDays = 1825;
    }

    public static function loginUser()
    {
        if (!Session::isLoggedIn())
        {
            // Login User
            $session_id = Session::newSessionId();
            $name = Session::newUserName($session_id);
            if (empty($name))
                throw new Exception('Failed to generate a unique user name. Try again later.');
            DB::insert('users', array(
                'name'          => $name,
                'session_id'    => $session_id,
                'last_login'    => time()
            ));
            setcookie("sessionId", $session_id, time() + (self::$cookieLifeSpanInDays * 86400), '/', $_SERVER['HTTP_HOST']);
            $_SESSION['isLoggedIn'] = true;

            var_dump(self::$cookieLifeSpanInDays);
            var_dump($_COOKIE);
            exit();
        }

        // Defaults
        return true;
    }
}

当我这样称呼班级时:Session::loginUser();

var_dumps()函数中的看起来loginUser像这样:

在此处输入图像描述

因此,我的登录功能被破坏(没有设置 cookie),因为类上的静态属性self::$cookieLifeSpanInDays为空。我在这里做错了什么?

4

1 回答 1

0

我已经修复了它:

<?php

class Session
{
    private static $cookieLifeSpanInDays = 1825;

    public static function loginUser()
    {
        if (!Session::isLoggedIn())
        {
            // Login User
            $session_id = Session::newSessionId();
            $name = Session::newUserName($session_id);
            if (empty($name))
                throw new Exception('Failed to generate a unique user name. Try again later.');
            DB::insert('users', array(
                'name'          => $name,
                'session_id'    => $session_id,
                'last_login'    => time()
            ));
            setcookie("sessionId", $session_id, time() + (self::$cookieLifeSpanInDays * 86400));
            $_SESSION['isLoggedIn'] = true;

            var_dump(self::$cookieLifeSpanInDays);
            var_dump($_COOKIE);
            exit();
        }

        // Defaults
        return true;
    }
}
于 2014-07-08T07:37:51.560 回答