【发布时间】:2013-06-18 00:21:26
【问题描述】:
我在我的应用程序中创建了登录/注销系统,但即使使用 session_start();、session_destroy(); 和 session_unset (); 等也无法正常工作。
这是我到目前为止所做的:
第一页(登录)
<?php
if(
!isset($_SERVER['PHP_AUTH_USER'])||
!isset($_SERVER['PHP_AUTH_PW'])||
($_SERVER['PHP_AUTH_USER'])!="admin"||
($_SERVER['PHP_AUTH_PW']!="admin")
)
{
header('WWW-Authenticate: Basic realm="Accès refusé"');
echo 'Accès refusé';
exit;
}
else
session_start ();
$_SESSION['PHP_AUTH_USER'] = "admin";
$_SESSION['PHP_AUTH_PW'] = "admin";
echo '
这是注销部分
<?php
session_start();
session_unset ();
session_destroy();
header("Location: index.php");
die;
?>
问题是会话没有被破坏,即使单击注销按钮也是如此。
【问题讨论】:
-
这应该是
if{而不是if(,然后是}而不是)等。另外你需要在每个页面中使用session_start();。 -
我在每一页都有 session_start() + if(condition) {} 这就是我一直的工作方式
-
你的 "style" 非常令人困惑,即使它对你有用。
-
是的,我看到
session_start();通常位于页面的顶部,而不是隐藏在else下方。可能是它被破坏的原因。 -
它在 (else) 之后,因为在我的情况下,或者正确地说,我开始的条件是如果没有登录名或密码,或者在这种情况下它们是错误的,那么什么都必须发生,但在其他情况下,会话应该开始并且成员页面显示出来(在回声之后)