无法读取会话数据

时间:2016-07-13 09:52:11

标签: php session

以下是我的代码的精简版。

我在search函数中设置会话,并将其打印出来以检查其设置。打印我们的作品。

然后我尝试在search_results中阅读会话,并显示以下错误:

  

未定义的索引:members_search

我不能为我的生活弄清楚我做错了什么。

任何帮助都将不胜感激。

<?php 

session_start();

class Cdwd_members {

    public function search() 
    {
        $results = '.........'

        $_SESSION['members_search'] = $results;

        print_r($_SESSION['members_search']);
    }   

    public function search_results() 
    {   
        print_r($_SESSION['members_search']);
    }

}

6 个答案:

答案 0 :(得分:0)

session_start()应放在脚本的顶部,而不是放在每个方法中。

将其放在<?php标记之后。

答案 1 :(得分:0)

试试这个。 session_start();应位于页面顶部

 <?php 
    session_start();
    class Cdwd_members {

        public function search() 
        {
            $results = 'my';        

            $_SESSION['members_search'] = $results;

            print_r($_SESSION['members_search']);
        }   

        public function search_results() 
        {  
            print_r($_SESSION['members_search']);
        }

    }
    $n = new Cdwd_members;
    $n->search();
   $n->search_results();

答案 2 :(得分:0)

尝试放置

  

start_session

在包含课程之前

,或者只是将其作为代码将要做的第一件事。

如果此类是您使用会话的唯一地方,也可以使用构造函数。构造函数是类在创建实例时自动执行的第一件事。

function __construct(){
  session_start();
}

Constructor & destructors PHP Docs

答案 3 :(得分:0)

我没有做太多OOP但你可以尝试一下,看看它是否有效。在function search()而不是print_r($_SESSION['members_search']),而不是return $_SESSION['members_search'],然后在function search_results()中,将print_r替换为此print_r(search());

答案 4 :(得分:0)

$n = new Cdwd_members;
$n->search_results();

调用搜索方法时存储的会话,也许你应该在'search_results'之前调用'search'?

答案 5 :(得分:0)

  1. 如果;在代码中第9行丢失,然后添加它。
  2. 确保在调用search_results()之前调用函数search()。或者你可以在search()中调用search_results()来设置会话。