我正在尝试开发一个网站,我在尝试根据用户是否登录时隐藏信息时遇到问题。
我使用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>';
}
?>
无论我做什么,它始终显示“您已登录!”
您在login.inc.php
和index.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 ['userid']是不是空使用var_dump($ _ SESSION ['userid'])
在开始会话使用后在会话中设置值
$_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>';
}
?>