【问题标题】:Undefined variable: _SESSION in Class未定义变量:类中的_SESSION
【发布时间】:2014-12-16 09:58:23
【问题描述】:

奇怪的情况。我有一个具有以下构造函数的项目类

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() 所以这不是问题。我什至可以在构造方法中打印_r($_SESSION),我看到'la'的会话变量。##

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

这是我在 index.php 顶部的会话初始化 ## 如果用户未选择任何语言,它还会设置默认语言 (la) 变量

<?php
    session_start();
    if(!isset($_SESSION['la'])) $_SESSION['la'] = "EN";
?>

这是项目构造函数中 print_r() 的输出## 数组 ( [la] => FR ) 知道这里可能出了什么问题吗? 谢谢!

【问题讨论】:

  • 我们可以查看您的index.php 文件吗?确保 session_start() 位于此文件的最顶部。
  • 然后在构造函数中显示print_r($_SESSION) 的输出。
  • 感谢您的回答!添加到问题中
  • 您确定您的 Ajax 调用通过index.php

标签: php session


【解决方案1】:

我觉得

<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,所以 index.php 页面上的 include/require 不是 session_start() 是不够的。 ajax 页面需要单独的session_start()(此处为 Projects.php)。

在您的 ajax 页面 (Projects.php) 上添加一个新的 session_start() 并告诉我它是否解决了问题。

【讨论】:

  • 嗨!我将文件添加到请求 Projects.php 文件的文件中,现在它正在工作。你是对的,AJAX 不知道 index.php 中的 session_。谢谢!
  • 感谢您的解决方案,很好的回答。
猜你喜欢
  • 2012-03-27
  • 1970-01-01
  • 2017-07-25
  • 2017-07-16
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多