Определяет в файле required_once не расширенный php - PullRequest
0 голосов
/ 05 июля 2018

У меня есть 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».

Почему это идет не так?

...