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

php-尝试有一个可以有2个超链接的文本,php,if-statement,Php,If Statement,当会话有效时,我有一个文本显示“我的帐户”。当用户已经登录时,它应该将他们重定向到AccountPage.html。如果用户尚未登录,则应将其重定向到AccountLogin.html。我想我可以添加下面这样的if语句,但每次它运行到时都会直接转到login.html <a <?php if (empty($_SESSION["UserName"])) { header("location:AccountLogin.html"); } else { header("location

当会话有效时,我有一个文本显示“我的帐户”。当用户已经登录时,它应该将他们重定向到
AccountPage.html
。如果用户尚未登录,则应将其重定向到
AccountLogin.html
。我想我可以添加下面这样的if语句,但每次它运行到时都会直接转到
login.html

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

这就是您要查找的代码。当然,因为我不能确定你是否以你应该的方式安排了会议。但如果你这样做了,这就行了

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

?>

你应该多学习。您需要的是以下代码:

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

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


另外:
location
是一个函数,它可以更改发送的标题并指示浏览器重定向到指定的url,因此当您需要硬重定向时,应该使用该函数(之后应该是
exit

我认为您设置的链接是错误的

试试这个:

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

?>

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


您应该添加会话_start();在PHP脚本页面的顶部,以保持会话活动。例:结束语。。那代码毫无意义。你的代码没有任何用处。您显然不了解php的基础知识。如果要输出内容,请使用
echo
<代码>标题()
不起作用,你想要什么@icecub和Felk我觉得这没什么意义我只学了12个小时的php,所以很新,我以前用过一个链接标签,但不认为它会在这里起作用看看作者的技能水平。你在跟他说外语;)你说得对,但我清楚地记得我第一次看到一段代码时:我什么都不懂!xD所以我认为这只是它应该是什么样子,一些关于如何更好地做事的建议不应该有害于:P