下面是我的代码的精简版本。
我在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']);
}
}
session_start()
应该放在脚本的顶部,而不是在每个方法中。
把它放在<?php
标签之后。
尝试放置
start_session
在包含类之前,或者只是将其作为代码将要执行的第一件事。
如果此类是您使用会话的唯一位置,您也可以使用构造函数。构造函数是类在创建实例时自动执行的第一件事。
function __construct(){
session_start();
}
构造函数和析构函数 PHP Docs
我没有做太多的 OOP,但你可以试试这个,看看它是否有效。在function search()
中,而不是print_r($_SESSION['members_search'])
,尝试代替return $_SESSION['members_search']
,然后在function search_results()
中,将print_r
替换为此print_r(search());
试试这个。 session_start();
shlould 位于页面顶部
<?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();
$n = new Cdwd_members;
$n->search_results();
调用搜索方法时存储会话,也许您应该在"search_results"之前调用"搜索"?
- 如果代码第 9 行缺少 ;,则添加它。
- 确保在调用 search_results() 之前调用函数 search()。或者你可以在 search() 中调用 search_results() 来设置会话。