2013-01-02 85 views
2

我最近將我的網站從XAMPP轉移到了MAMP。問題是我的註銷系統不再有效。註銷控件:PHP註銷系統無法正常工作。 (MAMP上的session_destroy)

<a href="logout.php">Log Out</a> 

我的註銷頁面本身:

<?php 
session_start() 
session_destroy() 
header('Location:login.php'); 
?> 

奇怪的是,當我改變的東西logout.php,比如使其成爲一個簡單的回聲聲明:

<?php 
echo 'test'; 

//session_start() 
//session_destroy() 
//header('Location:login.php'); 
?> 

我仍然沒有在瀏覽器中看到'test';即使我已經在頁面中註釋掉了標題,我仍留在index.php中。我是100%的鏈接路徑很好。

是否改變logout.php文件或不改變,我可以看到服務器沒有刪除tmp/php中的會話文件。這很奇怪,因爲我已經允許在MAC OS X中每個人都可以讀寫這個tmp/php文件夾。

操作系統:Mac OS X
服務器:Apache中甲基苯丙胺
PHP:5.4.4
瀏覽器:在發生問題谷歌瀏覽器Safari瀏覽器&

(這是我的處女航上發佈提問計算器,如果你的技巧,以提高我的問話,請讓我知道)

+0

如果你「留在** index.php **」,你肯定不會在你的瀏覽器中看到「測試」,因爲你說你將** logout.php **更改爲'echo'測試'; '聲明。您應該訪問logout.php。 – howanghk

+0

當您在url中輸入manualy path_to_logout.php時,您會看到什麼錯誤? – sandip

+0

難道是你正在發生錯誤,但將error_reporting設置爲0? –

回答

1

嘗試使用這個:

<? 
    session_start(); 

    $_SESSION = array(); 
    header("Location: index.php"); 
?> 

我剛剛清除了$ _SESSION,並且它始終對我有用

0

這些是註銷的基本部分,假設您的腳本正在使用PHP會話。請注意,您的註銷腳本會導致解析錯誤,因爲它在語句結尾缺少分號。也許只是一個錯字。

<?php // RAY_EE_logout.php 
session_start(); 

// CLEAR THE INFORMATION FROM THE $_SESSION ARRAY 
$_SESSION = array(); 

// IF THE SESSION IS KEPT IN COOKIE, FORCE SESSION COOKIE TO EXPIRE 
if (isset($_COOKIE[session_name()])) 
{ 
    $cookie_expires = time() - date('Z') - 3600; 
    setcookie(session_name(), '', $cookie_expires, '/'); 
} 

// TELL PHP TO ELIMINATE THE SESSION 
session_destroy(); 

// REDIRECT TO THE HOME PAGE 
header("Location: /"); 
exit; 

HTH,〜雷

+0

謝謝,我試過了。但是,它沒有工作。 – Tom

0

嘗試使用輸出緩衝器。

​​
+0

謝謝你,我試過了。但是,它沒有工作。 – Tom

1

如果調用logout.php當containts下面的代碼不會打印test那麼還有別的東西錯了,它無關的會議。

<?php 
echo 'test'; 
//session_start() 
//session_destroy() 
//header('Location:login.php'); 
?> 

你提到它仍然顯示在index.php,它讓你在你的.htaccess文件,該文件重定向從logout.php到索引調用一個重寫規則我的事情。檢查你的htaccess文件是否有任何規則。

您可以找到有關htaccess on MAMP這裏

+0

謝謝你的回答。不幸的是,我無法修復它。我只有一個.htcacces文件,而不是在我的網站的根文件夾: 選項-Indexes 我剛剛測試了以下:我改變了鏈接在我的菜單logout1.php,也取得了logout1.php文件; logout.php和logout1.php都位於站點根文件夾中。 在logout1.php中我做了一個簡單的echo語句: <?php echo'test'; ?> 此文件尚未達到。菜單中的所有其他鏈接都可以正常工作。在XAMPP下也沒有問題。你有解決這個問題的建議嗎? – Tom

+0

你說它沒有達到。你看到了什麼? 404未找到錯誤或其他頁面? –

+0

由於某種原因,現在只顯示logout1.php。所以我看到'測試'被迴應。如果你看看我上面的評論,現在發生了兩個問題: 1.當我通過鏈接去登錄logout.php時,會話信息文件沒有被銷燬(我在finder中看到這個文件)。 2.如果我手動輸入地址,會話信息文件會在幾秒鐘後被刪除。 3.如果我回到index.php,它首先看起來好像我已經登錄。然後我刷新,並且index.php看起來好像我已經註銷。 你知道一個解決方案嗎? (感謝您的幫助到目前爲止!) – Tom

-1

@ tom.e.degroot信息:我最後一次檢查,「它沒有工作」是不是一個錯誤消息。你需要再多描述一下症狀。請按照這裏的指導:http://SSCCE.org並給我們一些東西,我們可以在我們自己的服務器上安裝和測試。謝謝,〜Ray

+0

親愛的雷, 謝謝你的建設性意見。我是新來的,我很高興你給了我這個有用的提示。當我嘗試了你的建議時,我的瀏覽器出現了404錯誤(因此,CodeIgniter並沒有生成404消息,這是更好的描述嗎? – Tom

0

在我的情況下,它必須與php代碼塊沒有被正確定義。我有<? ?>而不是<?php ?>

希望這可以幫助別人。