2012-01-21 121 views
1

是什麼力量讓一個註銷鏈接的最佳方式?我想銷燬所有會話並重新導入登錄頁面,但我不確定這是否是最好的方式。現在我有鏈接導致管理員/ logout.php,但我覺得這將是一個壞的事情,以顯示用戶我的文件夾結構。這是我的代碼,它非常簡單:PHP - 創建註銷鏈接

session_start(); 
    session_destroy(); 
     echo "<script type=\"text/javascript\">window.location.href='../login.php';</script>"; 

那麼最好是在javascript或ajax中做些什麼?

+2

爲什麼通過JS重定向時,你可以做'標題( 「位置:login.php中」)'? –

+0

檢查了這一點:http://stackoverflow.com/questions/2241769/php-how-to-destroy-the-session-cookie-correctly – Josh

+0

@MarcB我問一個問題前一段時間提到的JavaScript重定向是最好的選擇我要鏈接它,但然後有一堆的意見如何壞它是如此我probablyyyy應該回去和改變的xD –

回答

3

如果你擔心暴露的目錄結構,那麼就不要使用目錄。只要有你的網頁的檢查一個logout查詢參數:

<?php 
if (isset($_GET['logout'])) { 
    session_start(); 
    session_destroy(); 
    header("Location: login.php"); 
    exit(); 
} 

您可以從任何網頁登出這樣一來,你的「管理」文件夾永遠不會被暴露,和做頭()重定向意味着沒有機會一個用戶打斷你可以使用的任何其他重定向方法(元標記,JavaScript等)。用戶看不到任何內容,因爲您沒有輸出任何內容。

+0

是的JavaScript重定向是問題。它暴露了我的目錄結構的一些原因,但是當我更改爲header() - 它已修復。我也喜歡'$ _GET []'的想法,而不是僅僅爲了註銷而創建一個全新的文件。 –

0

logout.php:

<?php 
session_start(); 
session_destroy(); 
?> 
<html> 
<head> 
<meta HTTP-EQUIV="REFRESH" content="0; url=login.php"> 
</head> 
</html> 

這需要一個單獨的PHP頁面。只是鏈接到它,他們不會看到這一點,相反,他們會看到的index.php文件內容,但與沒有存儲會話數據:)

這大概是要對這個最好和最簡單的方法。所有這些都在簡單的PHP中,使用HTML重定向。

+0

見這就是我想...我的'管理員/ logout.php'看上去像代碼鏈接在我的問題(內PHP標籤)沒有HTML。但是網址仍然是/admin/logout.php。我認爲我的問題最終成爲JavaScript重定向,因爲它不這樣做,當我使用header()而不是 –