【发布时间】:2019-03-20 09:11:58
【问题描述】:
我正在使用 DB 函数从数据库动态生成菜单。此功能取决于用户配置文件。因此,当用户登录时,该函数将绘制菜单内容如下:
<li>menu1</li>
<li>menu2</li>
<li>menu3</li>
问题是每次访问其中一个页面时,php 代码都会调用 DB 函数,因此我想将菜单内容存储在 _SESSION 值上并使用它直到会话结束。
所以,我试试这个。如果 $_SESSION['showmenu'] 为空,则调用 DB 函数 showmenuweb() 并将菜单内容分配给 $_SESSION['showmenu'] 如果它不为空,则只需 $_SESSION['showmenu'];内容。
if(!isset($_SESSION['showmenu'])) {
echo "there is no menu on session";
$_SESSION['showmenu'] = showmenuweb('ADMIN');
} else {
echo "there is menu on session";
echo $_SESSION['showmenu'];
}
然后我调用会话内容:
<php
echo $_SESSION['showmenu'];
?>
但是这段代码总是调用函数 showmenuweb(),它看起来总是 $_SESSION['showmenu'] 是空的。
我们将不胜感激。
更新:这是代码:
<?php
include_once('init.php');
if(!isset($_SESSION))
{
session_start();
}
echo $_SESSION['showmenu'];
if(!isset($_SESSION['showmenu'])) {
echo "there is no menu on session";
$_SESSION['showmenu'] = showmenuweb('ADMIN');
} else {
echo "there is a menu on session";
}
?>
<!DOCTYPE html>
<html lang="en">
<body>
<?php
echo $_SESSION['showmenu'];
echo '<br />';
echo '<br />';
showmenuweb('ADMIN');
?>
</body>
</html>
html输出显示:
会话中没有菜单
【问题讨论】:
-
每个页面都调用 session_start 吗?
-
是的,在每一个上。
-
您的 sn-p 是正确的,您的错误必须在其他地方。会话是否有效?你不会不小心取消你的会话吗? ...
-
您是否检查过 showmenuweb() 确实返回了您期望的结果?如果你这样做
echo showmenuweb('ADMIN'); die;,你会得到什么? -
是的,它会返回。如果我放回声。事实上它总是所有的db函数。一个新手问题,一个SESSION值可以存储HTML内容吗?
标签: php