我的网站在访问时没有开始会话,我不知道为什么,但我的网站是这样的:
<?php
session_start();
$title = "Home";
include("include/header.php");
include("include/functions.php");
?>
...HTML stuff here...
<?php
include("footer.php");
?>
但是当我查看Cookies(Firefox附加组件)时,没有开始会话...我使用了session_regenerate_id();但它根本不起作用。
由于没有会话,因此无法登录,我的网站中没有任何session_destroy(),仅在注销时。
但有趣的是,当我登录时(尚未刷新或导航)然后点击退出按钮,我的网站上有一个会话,然后当我再次登录时,它告诉我我已登录但如果我登录并导航或刷新,它不会告诉我我已经登录,因为没有会话...
注销:
<?php
session_start();
session_destroy();
setcookie("cookie-name", "", time()-60, "", "", 0);
header("Location: ../index.php");
exit;
?>
我该怎么办?
答案 0 :(得分:3)
您必须在每个正在访问的文件的开头都有session_start()
并使用会话。该名称具有误导性,session_start()
实际上无法启动新会话,但初始化 PHP会话管理。
答案 1 :(得分:1)
不确定它是否相关,但有一个奇怪的PHP怪癖要求SESSION_START()位于<?php
标记正下方的行上。关于空白和会议之上的额外事情的事情曾经让我变得混乱。我最近一直在使用Zend,这避免了它自己的会话处理系统的问题。
您可以尝试执行print_r($ _ SESSION)以查看会话数组中是否有任何内容。
答案 2 :(得分:1)
这可能是因为你没有在你给出的任何一个例子中设置会话,你必须有一个如下所示的行来实际创建一个会话,然后在你需要的所有后续页面上访问会话变量在session_start();
$_SESSION['example'] = 'something';
答案 3 :(得分:1)
它看起来不像你在会话或cookie中设置任何内容。
如果你想在会话中传递信息,你需要在$ _SESSION变量中分配必要的值。
例如,您可以在主页上执行以下操作:
<?php
session_start();
$_SESSION['myVariable'] = "my text";
?>
然后在任何后续页面上,您都可以访问您设置的变量。
<?php
session_start();
echo $_SESSION['myVariable']; //This will print "my text"
?>