如果 - 否则无法在__construct()中工作

时间:2017-11-15 18:53:14

标签: php session constructor

php的if else无效__construct()。如果SESSION不为空,我创建它,并记录,否则我记录它。但是没有日志发生{if {} {log} else {log}。它只记录if else之后的最后一行。

<?php

class Controller  {

    public function __construct() {

        // parent::__construct(); 


        if( empty($_SESSION) ) {
            $nowStr = '' . time() .'_';
            $sesname = !empty( $givArr['sesname'] ) ? $givArr['sesname'] : uniqid ($nowStr).uniqid() ;
            $oldSesname = session_name($sesname);
            session_start();
            $_SESSION['name']=$sesname;
            file_put_contents( PATH_LOG . 'n ses171113', PHP_EOL.' ###################### src\core\Controller.php   STARTED _SESSION='. json_encode( $_SESSION ) . PHP_EOL.PHP_EOL, FILE_APPEND ) ;
        } // DOES NOT LOG NEVER 
        else {
            file_put_contents( PATH_LOG . ' ses171113', PHP_EOL.' ###################### src\core\Controller.php   CONTINUE _SESSION='. json_encode( $_SESSION ) . PHP_EOL.PHP_EOL, FILE_APPEND ) ;
        } // DOES NOT LOG NEVER 

        file_put_contents( PATH_LOG . ' ses171113', PHP_EOL.' ###################### src\core\Controller.php   case out of scope =' . PHP_EOL.PHP_EOL, FILE_APPEND ) ;  //  LOGS

    }

1 个答案:

答案 0 :(得分:1)

您的代码已损坏。 $_SESSION是超全局的,所以检查它是否存在,如果徒劳无功,你就开始了会话。除此之外,您还可以访问非现有变量$givArr

我强烈建议您在脚本的第一行执行error_reporting(E_ALL);,因为您只是将所有有用的错误报告静音。您还应该考虑对代码进行静态分析。