杀死Session后,Header Location不会重定向

时间:2016-02-17 10:50:59

标签: php

我意识到之前已经问过这个问题,但我已经解决了之前的问题无济于事。

当我退出并终止会话时,我没有收到错误,只是一个空白页面。会话终止但没有重定向:(

这是注销的包含

<?php
// Initialize the session.

session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
    $params["path"], $params["domain"],
    $params["secure"], $params["httponly"]
);
}

// Finally, destroy the session.
session_destroy();

if(PHP_SESSION_NONE === true){

//i added this conditional statement as a last ditch, there was no if statement to begin with just a simple redirect, neither work.     

header("Locaction: index.php");
}
?>

这是我的表单代码。

<form action="endSession.php" method="post" id="end_session">
<button type="submit" name="end_session" id="end_button">Logout</button>
</form>

4 个答案:

答案 0 :(得分:2)

标题中拼写错误。它是Location而非Locaction

应该是:header("Location: index.php");

请参阅:http://php.net/manual/en/function.header.php

答案 1 :(得分:2)

PHP_SESSION_NONE只是一个常量。

您必须检查会话状态。

if (session_status() === PHP_SESSION_NONE)

答案 2 :(得分:2)

你拼错了Location

//Your spelling
header("Locaction: index.php");

//Correct spelling
header("Location: index.php");

Reference

另外,据我所见,PHP_SESSION_NONE使用不当。它是session_status()的返回值,因此您应该像这样使用它:

if(session_status() === PHP_SESSION_NONE){ //...

虽然更好的做法是:

if(session_status() !== PHP_SESSION_ACTIVE){ //...

Reference

答案 3 :(得分:1)

您已将Location键入Locaction

请检查您的错误消息。您可以参考这篇文章,了解如何检查错误消息:How to get useful error messages in PHP?

或者,您可以尝试使用在线语法检查器:http://phpcodechecker.com,但在服务器中启用它仍然是最佳方式。