我很抱歉打扰你,我尽力解决这个问题,但我不确定我哪里出错了,我想知道是否有人会愿意帮忙!
基本上,我遇到了一些$ _SESSION变量的问题;我希望每次访问者都能访问该页面时会显示不同的内容消息。以下代码首次登陆页面时似乎会跳过第一个“content1”,并显示“content2”相反,然后再次访问“content3”。我已经进行了一次未设置的调用,最终将其发送到那里,我没有正确使用_SESSIONS吗?
我不确定会话变量是如何分配给1的,因为它在if === 1语句中正确着陆而没有首先返回原始的“content1”
if (empty($_SESSION)) {
session_start();
}
if (!isset($_SESSION['content'])) {
$content = "content1";
$_SESSION['content'] = 1;
return $content;
}
elseif ($_SESSION['content'] === 1) {
$content = "content2";
$_SESSION['content'] = 2;
return $content;
}
elseif($_SESSION['content'] === 2) {
$content = "content3";
unset($_SESSION['content']);
return $content;
}
对于bab呀学语的道歉或者这是否是我的简单修复/误解。这引起了很大的麻烦!
非常感谢。
-edit-
这是一个从同一个类中调用的函数,它在任何地方都没有经过循环。
答案 0 :(得分:5)
如果尚未创建会话,则只调用session_start();
。
其他时候,当它是1或2时呢?
无论您的session_start();
声明
if (empty($_SESSION)) {
答案 1 :(得分:0)
您应始终使用session_start()
功能。如果会话存在,它将继续,否则它将创建一个新会话。
您的代码可以简化为以下内容:
// Start/Resume session
session_start();
// Get content
function display_message()
{
if ( ! isset($_SESSION['content']))
{
$_SESSION['content'] = 1;
}
if ($_SESSION['content'] == 1)
{
++$_SESSION['content']; // Increment session value
return 'Content #1';
}
elseif ($_SESSION['content'] == 2)
{
++$_SESSION['content']; // Increment session value
return 'Content #2';
}
elseif ($_SESSION['content'] == 3)
{
unset($_SESSION['content']); // Remove session value
return 'Content #3';
}
}
// Display content
echo display_message();
但是,如果有人第四次访问您的网页,系统会再次显示第一条消息(因为会话值不再跟踪他们显示的内容)。
使用cookie跟踪此信息可能会更好地处理这种功能吗?