php:注销按钮赢得';不要更改为登录
所以我试图设置标题,如果用户已经登录,则登录链接将更改为注销,如果用户已经注销,则它将从注销更改为登录。我可以将登录改为注销,但即使用户注销,链接仍然保持在“注销”状态,而不是改回登录。以下是我的php标题部分,它应该将登录更改为注销,并将注销更改为登录:-php:注销按钮赢得';不要更改为登录,php,html,session,Php,Html,Session,所以我试图设置标题,如果用户已经登录,则登录链接将更改为注销,如果用户已经注销,则它将从注销更改为登录。我可以将登录改为注销,但即使用户注销,链接仍然保持在“注销”状态,而不是改回登录。以下是我的php标题部分,它应该将登录更改为注销,并将注销更改为登录:- <?php if(isset($_SESSION['username'])): ?> <a href="" class="w3-bar-item w3-button">Login</a> <?php
<?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; ?>
根据您的代码,登录/注销按钮的条件不正确,应为:
<?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; ?>
另外,我注意到您的脚本没有包含任何身份验证和验证,以确认用户是否真实存在于用户的数据库表中。任何人都可以设置用户名会话并轻松绕过您的脚本。当您在实时服务器上时,这一点非常重要。条件是错误
<?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>`;
}
?>
而会话从未启动会话_START();替换为会话_start()
var\u dump($\u SESSION)
并查看结果会话未激活,然后在脚本顶部调用SESSION\u start()
并检查用户名会话是否存在:var\u dump(isset($\u SESSION['username'))
因此每当我登录时,var\u dump(isset($\u SESSION['username'))返回bool(true)无论何时我注销,它都会返回bool(false),但登录状态不会改变这只是使整个按钮从屏幕上消失:/
<?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>`;
}
?>