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