2015-03-03 155 views
0

我想在重定向之前清除會話值。在我的logout.php我有會議destry code.This代碼工作很好如果我coment行重定向代碼。如果我包含重定向代碼它得到之前重​​定向會話殺戮。銷燬會議變量註銷

<?php 
session_start(); 
session_unset(); 
$_SESSION = array(); 
session_destroy(); 
    /* 
    echo ("<SCRIPT LANGUAGE='JavaScript'> 
     window.location.href='login.php'; 
     </SCRIPT>"); 
    */ 
?> 

回答

2

你需要通過PHP的標題來做到這一點,將其放置在if語句,以便摧毀會議結束後會重定向你的login.php

<?php 
session_start(); 
session_unset(); // Also there is no need for unsetting 
$_SESSION = array(); //This is useless too. 

// use php header instead of javascript 
if(session_destroy()) //once you destroy session it automatically unsets all keys 
{ 
header("location: login.php"); 
} 
?> 
+0

header(「location:login.php」);不起作用 – user3386779 2015-03-03 08:17:44

0

使用ob_start()

該功能將打開輸出緩衝。當輸出緩衝爲 激活時,不從腳本發送輸出(除標題外),而是輸出 ,輸出存儲在內部緩衝區中。

使用ob_get_contents()可以將此內部緩衝區的內容複製到字符串 變量中。要輸出 內部緩衝區中存儲的內容,請使用ob_end_flush()。或者,ob_end_clean() 將自動丟棄緩衝區內容。

<?php ob_start(); ?> 
<?php 
session_start(); 
session_unset(); 
$_SESSION = array(); 

if(session_destroy()) 
{ 
header("location: login.php"); 
} 
?> 
+0

仍有問題可以 – user3386779 2015-03-03 08:29:04

+0

您的代碼在標記後? – Mohammad 2015-03-03 08:30:47

+0

這是在單獨的頁面login.php沒有HTML。 – user3386779 2015-03-03 08:32:18

0

呼叫會話後重定向破壞這樣

<?php 
if(session_destroy()) 
{ 
header("location: login.php"); 
} 
0

相信Raheel汗的答案是正確的。如果標題(「位置:login.php中」)不工作,請驗證您的代碼PHP的開放標籤之前的空間

<? 

沒有頭之前不能被髮送到瀏覽器。如果您向瀏覽器發送任何內容,標題重定向將不起作用。