我正在尝试开发一个网站,但在尝试根据用户是否登录隐藏信息时遇到问题。
我正在使用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.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['用户 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>';
}
?>