php:注销按钮无法更改为登录

时间:2018-04-16 18:14:18

标签: php html session

所以我试图设置标题,如果用户已登录,登录链接将更改为注销,如果用户已注销,则应从注销更改为登录。我能够将登录更改为注销,但是,即使用户注销,链接仍然保持打开状态"注销"而不是改回登录。这是我的标题部分,应该更改登录注销并注销登录: -

<?php if(isset($_SESSION['username'])): ?>
<a href="" class="w3-bar-item w3-button">Login</a>
<?php else: ?>
<a href="" class="w3-bar-item w3-button">Log out</a>
<?php endif; ?>

这是我的注销页面的代码。每当使用的注册表单击注销时,它应该销毁会话并清除$_session并向用户显示他已成功注销的消息。我究竟做错了什么?顺便说一句,我经历了很多类似的问题,但没有找到令人满意的答案

<?php include 'header.php';?>
<?php
SESSION_START();
unset($_SESSION['username']);
session_destroy();
echo "<br>";
echo "You are successfully Logged Out!";
echo "<br>";
?>

2 个答案:

答案 0 :(得分:0)

从您的代码中,登录/注销按钮的条件不正确,应该是:

<?php if ( ! isset($_SESSION['username'] ) ): ?>
<a href="" class="w3-bar-item w3-button">Login</a>
<?php else: ?>
<a href="" class="w3-bar-item w3-button">Log out</a>
<?php endif; ?>

另外,我注意到您的脚本没有包含任何身份验证和验证,以确认用户是否真实并且存在于用户的数据库表中。任何人都可以设置用户名会话并轻松绕过您的脚本。当您在实时服务器上时,这非常重要。

答案 1 :(得分:0)

条件错误

  <?php
    if(!isset($_SESSION['username'])){
      echo `<a href="" class="w3-bar-item w3-button">Login</a>`;
    }else{
     echo `<a href="" class="w3-bar-item w3-button">Log out</a>`;
    }
   ?>

并且会话从未启动过SESSION_START();替换为session_start();