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

问题描述 投票:1回答:3

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

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

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

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

然后,我在index.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>';
}
 ?>

无论我做什么,它始终显示“您已登录!”

php
3个回答
0
投票

您在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文件中替换它。


0
投票

如果你把userId放在会话中然后检查登录你应该使用

isset($_SESSION['userid'])

还要检查$ _SESSION ['userid']是不是空使用var_dump($ _ SESSION ['userid'])

在开始会话使用后在会话中设置值

 $_SESSION['userid']= $yourId_number;

0
投票

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

 <?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>';
} 
?>
© www.soinside.com 2019 - 2024. All rights reserved.