Php 用于登录和注销的If-else语句

Php 用于登录和注销的If-else语句,php,login,Php,Login,我在前端使用一个脚本,如果用户登录,它应该呈现用户名而不是登录按钮,否则它应该保持不变。但我的脚本不起作用 <?php if(!isset($_SESSION['txt_username']) || !isset($_SESSION['txt_pwd'])){ echo "<a href='login.php'>Log in</a>"; header("Location:login.php"); else {echo $_SESS

我在前端使用一个脚本,如果用户登录,它应该呈现用户名而不是登录按钮,否则它应该保持不变。但我的脚本不起作用

<?php 
    if(!isset($_SESSION['txt_username']) || !isset($_SESSION['txt_pwd'])){
    echo "<a href='login.php'>Log in</a>"; 
    header("Location:login.php");
    else {echo $_SESSION['txt_username']}
    }
?>

有几个语法错误。在尝试诊断错误时,正确格式化代码将大有帮助:

<?php 
if(!isset($_SESSION['txt_username']) || !isset($_SESSION['txt_pwd'])){
    //echo "<a href='login.php'>Log in</a>";                                          
    header("Location:login.php");
}else{
    echo $_SESSION['txt_username'];
}
php的header函数在找到该行时立即执行重定向。它还做其他事情:阅读:

试试这个:

if(!isset($_SESSION['txt_username']) || !isset($_SESSION['txt_pwd'])){
    echo "<a href='login.php'>Log in</a>";                                          
else {
    echo $_SESSION['txt_username'];
}

结尾:不要在$\u会话中保留密码。至少对该密码使用md5或某些加密。

您是否先启动了会话?如果已给出输出,则无法发送头。尝试删除标头命令上方的回显。此外,您还应该打开错误报告-这会提醒您注意此问题。请看一看-它处理您应该得到的错误。是的,我打开了,启动会话。如果您在其他文件的{echo$_会话['txt_username']}后面有任何代码,则需要在其他{echo$_会话['txt_username']}末尾添加分号另外,var_dump$会话;你现在是你的朋友。你将遭受同样的隐藏错误。发送标题之前不能打印输出。哦?不久前我停止使用PHP,因此我不了解最新和最伟大的更新:P您能为该语句提供参考吗?啊,您的意思是当输出被缓冲时。在这种情况下,我们可以做类似的事情,但我不相信它与PHP版本有关。。。可能是更新版本更改了默认设置。