Php 当我第二次呼叫时,我失去了$会话的价值

Php 当我第二次呼叫时,我失去了$会话的价值,php,Php,当我第二次调用会话时,我得到值null$\u。第一次得到值,但第二次没有 我做错了什么 代码如下: <?php session_start(); require_once('inc/config.php'); if(!$user->is_loggedin()) { $user->redirect('index.php'); } $user_id = $_SESSION['user_session']; $query = $DB_con->prepare("SEL

当我第二次调用会话时,我得到值null$\u。第一次得到值,但第二次没有

我做错了什么

代码如下:

<?php
session_start();
require_once('inc/config.php');
if(!$user->is_loggedin())
{
    $user->redirect('index.php');
}
$user_id = $_SESSION['user_session'];
$query = $DB_con->prepare("SELECT * FROM users WHERE user_id=:user_id");
$query->execute(array(':user_id' => $user_id));
$userRow = $query->fetch(PDO::FETCH_ASSOC);

?>
<html>
<head>
<meta charset=utf-8" />
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css"  />
<link rel="stylesheet" href="style.css" type="text/css"  />
<title>BIENVENIDO - <?php print($userRow['user_name']); ?></title>
</head>

<body>
    <header>
        <nav class="navbar navbar-default navbar-static-top" role="navigation">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex6-collapse">
                    <span class="sr-only">Desplegar navegación</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">Olimpiadas FC</a>
            </div>
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right">
                    <?php if(isset($_SESSION['user_session'])){ ?>
                        <?php var_dump($_SESSION['user_session']); ?><!-- Here appear data a string "2" -->
                     <li><a href="<?php $user->logout() ?>">Salir</a></li>
                    <?php } else{ ?>
                     <li><a href="<?php $user->redirect('index.php') ?>">Entrar</a></li>
                    <?php } ?>
                </ul>
            </div>
        </nav>
    </header>
    <div class="container">
        <?php var_dump($_SESSION['user_session']);die(); ?> <!-- Here appear null -->
           aaaaaaaaaa

    </div>
</body>
</html>
<li><a href="logout.php">Salir</a></li>

实际上,您正在调用函数logout and redirect,而不是链接到第38行和第40行调用它们的页面。所以在第38行之前,会话存在,在第38行之后,会话不存在

我的建议(我不确定这是否是最佳解决方案)是创建一个页面并将其命名为logout.php,包括您的配置文件并从中调用logout函数。然后更改链接,使其如下所示:

<?php
session_start();
require_once('inc/config.php');
if(!$user->is_loggedin())
{
    $user->redirect('index.php');
}
$user_id = $_SESSION['user_session'];
$query = $DB_con->prepare("SELECT * FROM users WHERE user_id=:user_id");
$query->execute(array(':user_id' => $user_id));
$userRow = $query->fetch(PDO::FETCH_ASSOC);

?>
<html>
<head>
<meta charset=utf-8" />
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css" type="text/css"  />
<link rel="stylesheet" href="style.css" type="text/css"  />
<title>BIENVENIDO - <?php print($userRow['user_name']); ?></title>
</head>

<body>
    <header>
        <nav class="navbar navbar-default navbar-static-top" role="navigation">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex6-collapse">
                    <span class="sr-only">Desplegar navegación</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">Olimpiadas FC</a>
            </div>
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right">
                    <?php if(isset($_SESSION['user_session'])){ ?>
                        <?php var_dump($_SESSION['user_session']); ?><!-- Here appear data a string "2" -->
                     <li><a href="<?php $user->logout() ?>">Salir</a></li>
                    <?php } else{ ?>
                     <li><a href="<?php $user->redirect('index.php') ?>">Entrar</a></li>
                    <?php } ?>
                </ul>
            </div>
        </nav>
    </header>
    <div class="container">
        <?php var_dump($_SESSION['user_session']);die(); ?> <!-- Here appear null -->
           aaaaaaaaaa

    </div>
</body>
</html>
<li><a href="logout.php">Salir</a></li>

  • 我希望这能有所帮助。

    第二个电话?页面刷新?另一页?在第二个$\u会话中,您在哪里分配任何内容到$\u会话?我只看到您正在访问它,从未分配给它。您从未在此脚本中设置会话变量。你把它放在别的地方了吗?我已经编辑了我的答案