未定义的变量:类中的_SESSION

时间:2014-10-21 08:34:29

标签: php session

奇怪的情况。我有一个Projects类,它有以下构造函数

public function __construct($db){
    $this->db = $db;
    $this->lang = strtolower($_SESSION['la']);
}

我使用AJAX调用一个简单的get()函数,但返回的错误是

<b>Notice</b>:  Undefined variable: _SESSION in <b>D:\Sites\proman\class\Projects.php</b> on line <b>10</b><br />

在我的index.php中,我有session_start(),所以不是问题。我甚至可以在构造方法中print_r($ _ SESSION),我看到&#39; la&#39;的会话变量。##

我尝试将session_start()也添加到Projects.php类的顶部,但后来我收到会话已经开始的警告。

这是我在index.php ##顶部的会话init 如果用户没有选择

,它还会设置默认语言(la)变量
<?php
    session_start();
    if(!isset($_SESSION['la'])) $_SESSION['la'] = "EN";
?>

这是Projects Constructor ##中print_r()的输出     数组([la] =&gt; FR) 任何想法可能会在这里出错? 谢谢!

1 个答案:

答案 0 :(得分:2)

我认为

<b>Notice</b>:  Undefined variable: _SESSION in <b>D:\Sites\proman\class\Projects.php</b> on line <b>10</b><br />

是您的ajax调用的结果。正确?

问题是您在使用ajax请求的文件中缺少session_start()。我认为你班上的文件是Projects.php。由于您使用的是ajax,而不是include/require index.php页面上的session_start()是不够的。 ajax页面需要单独session_start()(此处为Projects.php)。

在你的ajax页面(Projects.php)上添加一个新的session_start(),让我知道它是否解决了这个问题。