php-试图拥有一个可以有2个超链接的文本

时间:2014-10-16 23:28:41

标签: php if-statement

当会话有效时,我有一个说“我的帐户”的文字。当用户已登录时,应将其重定向到AccountPage.html。如果用户尚未登录,则应将其重定向到AccountLogin.html。我想我可以添加if语句,但每次运行都直接进入login.html

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

3 个答案:

答案 0 :(得分:2)

你应该学习更多。你想要的是这段代码:

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

我强烈反对这种将HTML与PHP混合的代码,最好使用一些漂亮的模板引擎,如Smarty,Twig,Mustache等......你也应该研究它们。

奖励:location是一个更改已发送标头并指示浏览器重定向到指定网址的功能,因此当您需要硬重定向时应该使用它(并且后面跟{{1} }})

答案 1 :(得分:0)

这是您正在寻找的代码。我不能确定你是按照你应该的方式在某个地方设置会话。但如果你这样做,这将有效。

<?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");
}

?>

答案 2 :(得分:0)

我认为你错误地设置了链接。

试试这个:

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

?>

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