У меня есть config.php файл и я хочу использовать define()
-es в моем SessionManager.php
Так что после включения config.php и SessionManager.php в index.php мои определения не расширяются до строк в SessionManager.php .
My config / config.php :
if (!defined('CONFIG_LOADED')) {
define('CONFIG_LOADED', true);
define('DB_INFO', 'mysql:dbname=devvie;host=localhost');
define('DB_USER', 'dev');
define('DB_PASS', 'sosecret');
define('APP_DOMAIN_NAME', 'donotclickhere.com');
define('APP_BRANCH', 'dev');
}
My SessionManager.php :
<?php
final class SessionManager
{
/* @var SessionManager $sessionManager */
private static $sessionManager = null;
/* @var Logger $logger */
private static $logger = null;
/**
* @return bool
*/
public function hasSession()
{
return session_status() === PHP_SESSION_ACTIVE;
}
public function checkSession()
{
if (session_status() === PHP_SESSION_DISABLED) {
self::$logger->LogError('The current configuration of PHP has sessions disabled!');
}
// Assuming session_status() === PHP_SESSION_ACTIVE || session_status() === PHP_SESSION_NONE now
self::startSession();
}
public function startSession()
{
session_set_cookie_params(3600, '/', '.' . APP_DOMAIN_NAME, ('master' === APP_BRANCH), true);
session_start([
'use_strict_mode' => true,
'cookie_lifetime' => 3600,
'cookie_secure' => ('master' === APP_BRANCH),
'http_only' => true,
]);
}
/**
* @return SessionManager
*/
static function instance()
{
if (self::$sessionManager === null) {
self::$logger = new Logger('../logs/' . date('y-m-d') . '.log', Logger::INFO);
self::$sessionManager = new static();
}
return self::$sessionManager;
}
/**
* Make constructor private, so nobody can call "new Class".
*/
private function __construct()
{
}
/**
* Make clone magic method private, so nobody can clone instance.
*/
private function __clone()
{
}
/**
* Make sleep magic method private, so nobody can serialize instance.
*/
private function __sleep()
{
}
/**
* Make wakeup magic method private, so nobody can unserialize instance.
*/
private function __wakeup()
{
}
}
define('SESSION_MANAGER', true);
My page.php :
<?php
require_once "../config/config.php";
require_once "../model/Login.class.php";
require_once '../shared/SessionManager.php';
SessionManager::instance()->checkSession();
$logFile = "../logs/" . date("y-m-d") . ".log";
$LOG = new Logger($logFile, Logger::INFO);
$userName = '';
if (isset($_SESSION['USER_ID'])) {
$LOGIN = new Login($ERR, $LOG);
$userName = $LOGIN->checkActiveSession() ? $_SESSION['user_name'] : '';
} else {
header('Location: ../login.php');
}
echo <<< PAGE
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF8">
<link rel="stylesheet" type="text/css" href="../css/style.css">
</head>
<body>
<div>Hello World!</div>
</body>
</html>
PAGE;
При запросе mypage.php я получаю файл cookie, но доменное имя «.APP_DOMAIN_NAME» вместо «.donotclickhere.com». То же самое касается настройки «Безопасный файл cookie».
Почему это идет не так?