当会话有效时,我有一个说“我的帐户”的文字。当用户已登录时,应将其重定向到AccountPage.html
。如果用户尚未登录,则应将其重定向到AccountLogin.html
。我想我可以添加if语句,但每次运行都直接进入login.html
<a <?php
if (empty($_SESSION["UserName"])) {
header("location:AccountLogin.html");
}
else {
header("location:AccountPage");
}?>> My Account </a>
答案 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>