Php 当我第二次呼叫时,我失去了$会话的价值
当我第二次调用会话时,我得到值null$\u。第一次得到值,但第二次没有 我做错了什么 代码如下: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
<?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会话?我只看到您正在访问它,从未分配给它。您从未在此脚本中设置会话变量。你把它放在别的地方了吗?我已经编辑了我的答案