如何根据用户是否登录来显示或隐藏信息



我正在尝试开发一个网站,但在尝试根据用户是否登录隐藏信息时遇到问题。

我正在使用mysqli作为数据库,并注册了一个测试用户。不幸的是,当使用回声时,它不会改变所看到的内容。

我在标题中有这个来创建会话:

<?php
require 'includes/dbh.inc.php';
session_start();
 ?>

然后,我在索引中使用它.php尝试根据他们是否登录来显示或隐藏:

<?php
if (!isset($_SESSION['userid'])) {
echo '<p class="login-status">You are logged in!</p>';
}
else {
echo '<p class="login-status">You are logged out!</p>';
}
 ?>

无论我看起来做什么,它总是显示"您已登录!

您在login.inc.phpindex.php中使用了不同的索引。在您的index.php中尝试此操作,它应该可以工作:

<?php
require 'header.php';
 ?>
<main>
  <div class="wrapper-main">
<section class="section-default">
<?php
print_r($_SESSION);
if (isset($_SESSION['idusers'])) {
echo '<p class="login-status">You are logged in!</p>';
}
else {
echo '<p class="login-status">You are logged out!</p>';
}
 ?>
</section>
</div>
</main>
 <?php
require 'footer.php';
  ?>

我在本地尝试了您的代码,它现在可以工作了。

编辑:我从您的index.php复制了我的工作代码。只需将其替换到index.php文件中即可。

如果您将 userId 放在会话中,那么为了检查登录,您应该使用

isset($_SESSION['userid'])

还要检查 $_SESSION['用户 ID'] 是否为空,请使用 var_dump($_SESSION['用户 ID'](

在会话中设置值,以便在启动会话使用后使用

 $_SESSION['userid']= $yourId_number;

在登录文件中,确保设置会话变量,例如

 <?php
 /* if  All credentials correct */
 if(!isset($_SESSION)) session_start();
 $_SESSION['user_id']= $actual_user_id;
 ?>

和在索引文件中,执行以下操作它将起作用。

<?php
if(!isset($_SESSION)) session_start();
if (isset($_SESSION['user_id'])) {
echo '<p class="login-status">You are logged in!</p>';
}
else {
echo '<p class="login-status">You are logged out!</p>';
} 
?>

最新更新