2013-08-22 96 views
0

我使用這段代碼作爲我的登錄表單。

<?php 

    include('session.php'); 

    if(isset($_SESSION['username'])) { 
    header('http://www.askmephilosophy.co.nf/account.php/'); 
    } 

?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html lang="en"> 
    <head> 
    <title>AMP : Log In</title> 
    <link rel="stylesheet" type="text/css" href="style.css" /> 
    </head> 

    <body> 
    <?php 
     echo $_SESSION['username']; 
    ?> 
    </body> 
</html> 

但是,當我嘗試重定向它不起作用。在我session.php文件的文件我有:

session_start(); 

$_SESSION['username'] = 'John'; 

仍然會呼應出了名的「約翰」,而不會重定向到account.php頁面的header()函數。

我以前用過這個,但是我看到做錯了。雖然我有PHP代碼上面的HTML。

有人可以向我解釋爲什麼這不起作用嗎?

回答

3

header('http://www.askmephilosophy.co.nf/account.php/');對瀏覽器並不意味着什麼,並被忽略。

你可能要添加「位置:」給它某處重定向:

header('Location: http://www.askmephilosophy.co.nf/account.php/'); 
+0

如果此解決方案不能解決您的問題,請嘗試添加:ob_start();到文件的頂部。 – Ryan

+1

問題中沒有「頭文件已發送」錯誤的證據,因此沒有必要修復該問題。另外,如果空間或BOM位於第一個腳本的開始處,則添加'ob_start()'可能無法修復它。 – Sven

1

您需要修改您發送的報頭,並添加退出聲明,所以重定向打通。

if(isset($_SESSION['username'])) { 
    header('Location:http://www.askmephilosophy.co.nf/account.php/'); 
    exit(); 
    } 
+2

退出不是強制性的。實際上,建議添加一個手動鏈接的頁面,指向自動重定向的相同位置,以防出現問題。 – Sven

+1

如果不退出,腳本將繼續運行,直至達到最終結果爲止。 – schoash

+1

我不知道他們爲什麼倒票,即使你說的都是正確的 –