2014-10-16 86 views
0

當會話有效時,我有一個文字說「我的帳戶」。當用戶已經登錄時,它應該將它們重定向到AccountPage.html。如果用戶尚未登錄,則應將其重定向到AccountLogin.html。我以爲我可以再補充,如果像下面的語句,但每次運行時間去直接login.htmlphp-試圖有一個文本,可以有2個超鏈接

<a <?php 
if (empty($_SESSION["UserName"])) { 
header("location:AccountLogin.html"); 
} 
else { 
header("location:AccountPage"); 
}?>> My Account </a> 
+0

您應該添加在session_start();在您的PHP腳本頁面的頂部,以保持會話活着。 EG:<?php session_start(); ...?>結束吧..那個代碼根本沒有意義.. – icecub 2014-10-16 23:30:39

+1

你的代碼沒有做任何有用的事情。你顯然不知道php的基礎知識。如果你想輸出一些東西,使用'echo'。 'header()'不行,你想要什麼! – Felk 2014-10-16 23:30:55

+0

@icecub和Felk我認爲它不會有意義我只有約12小時的學習PHP,所以非常新,我曾經使用鏈接標籤,但不認爲它會在這裏工作 – puzzledking 2014-10-16 23:36:20

回答

2

你應該學習更多。你想這是什麼代碼:

<?php 
session_start(); 
$url = empty($_SESSION['UserName']) ? 'AccountLogin.html' : 'AccountPage'; 
?> 
<a href="<?php echo $url ?>">My Account</a> 

我非常不鼓勵這樣的代碼,你用PHP混合HTML,更好的辦法是使用一些不錯的模板引擎諸如Smarty,嫩枝,鬍鬚等..你也應該研究它們。

獎勵:location是改變頭部信息和指示瀏覽器重定向到指定的URL的功能,因此,它應該當你需要一個硬重定向(和應遵循的exit

+0

以及看作者的技能水平。你對他說的是一種外語;) – Umingo 2014-10-17 00:09:15

+0

你是對的,但我清楚地記得第一次看到一段代碼:我不明白一件事! xD所以這就是它應該如何,我想,以及如何以更好的方式做事不應該傷害的一些建議:P – Iazel 2014-10-17 00:18:06

0

這是你要找的代碼。 Ofcouse我不能確定你是按照你應該的方式設置會話的。但如果你這樣做,這將工作。

<?php 
session_start(); 

if(!isset($_SESSION['UserName']) || empty($_SESSION['UserName'])){ 
    //Personally I believe header("location") should only be used for hard urls but ok 
    header("location: AccountLogin.html"); 
} else { 
    header("location: AccountPage.html"); 
} 

?> 
0

使用我認爲你正在設置錯誤的鏈接。

試試這個:

<?php 
if (empty($_SESSION["UserName"])) { 
$url = "AccountLogin.html"; 
} 
else { 
$url = "AccountPage.html"; 
} 

?> 

<a href="<? echo $url ?>">My Account </a>