如何使用 php 在不同页面中访问我的会话变量?
Posted
技术标签:
【中文标题】如何使用 php 在不同页面中访问我的会话变量?【英文标题】:How can I access my session variable in a different page with php? 【发布时间】:2015-04-08 20:08:26 【问题描述】:大家我在 login.php 页面的顶部启动了会话变量。然后设置会话,我使用 include 语句调用第二页。我用 if 语句进行了测试,它似乎通过了。然后我尝试在新显示的页面中回显变量的内容。页面显示意味着它通过了 if 块但会话变量的内容没有显示。就好像会话变量超出了范围。如何在不同的页面中访问我的会话变量。
<?php
session_start();
$username = "";
if (isset($_POST['submit']))
$username = $_POST["username"];
$password = $_POST["password"];
$_SESSION["username"] = $found_admin["username"];
if (isset($_SESSION["username"]));
redirect_to("index.php");
else
$_SESSION["message"] = "Username/password not found.";
?>
<?php include("login.html"); ?>
这是我的 php 文件调用的 html 页面:
<!doctype html>
<head>
</head>
<body>
<?php
echo $_SESSION["username"];
$loggenOnUser=$_SESSION["username"];
?>
<div class="gridContainer clearfix">
<div id="div1" class="fluid">
This page is being called by my login.php file.</div><div id="LoggedInUser" class="fluid ">Hi. I'm <?php $loggenOnUser?> </div>
<img id="homeImage" src="images/home.gif" /> </div>
</div>
</body>
</html>
似乎无法理解为什么我无法访问另一个页面上的会话变量。任何帮助将不胜感激。谢谢!
【问题讨论】:
第二个文件中缺少session_start()
和 <?php echo $loggedOnUser; ?>
这应该是这样的
【参考方案1】:
确保你使用
session_start();
在每个页面的开头,或任何需要访问会话的 PHP 文件。
执行此操作的最简单方法是使用 header.php 文件,并在您网站的每个页面或公共页面的顶部包含/要求此文件。
在这个 header.php 中你会有类似
<?php
session_start();
if (isset($_SESSION['username']))
// This session already exists, should already contain data
echo "User ID:", $_SESSION['id'], "<br />"
else
// New PHP Session / Should Only Be Run Once/Rarely/Login/Logout
$_SESSION['username'] = "yourloginprocesshere";
$_SESSION['id'] = 444;
?>
你的页面就是这样的
<?php require "header.php"; ?>
<!doctype html>
<head></head>
<body>
<?php
if (isset($_SESSION["username"]))
$loggenOnUser = $_SESSION["username"];
echo "Found User: ", $loggenOnUser, "<br />"
else
$loggenOnUser = " a public user";
?>
<div class="gridContainer clearfix">
<div id="div1" class="fluid">
This page is being called by my login.php file.
</div>
<div id="LoggedInUser" class="fluid ">
Hi. I'm <?php echo $loggenOnUser; ?>
</div>
<img id="homeImage" src="images/home.gif" /> </div>
</div>
</body>
</html>
【讨论】:
欢迎您 ;) 只是一个提示.. 需要 "header.php"... 将其扩展为多个包含/需要... session.php/database.php/user.php/ content.php 或任何.. 它与 php 一起使用很方便。【参考方案2】:*编辑
你忘了echo
您需要在访问会话之前启动会话 变量
将session_start()
放在页面顶部
放回声Hi. I'm <?php echo $loggenOnUser; ?>
【讨论】:
添加了 session_start 和 但仍然没有显示在新页面的任何地方。【参考方案3】:查看本站:http://php.net/manual/en/function.session-start.php
您需要在所有 php 文件中写上session_start()
,最好在顶部。
【讨论】:
【参考方案4】:您应该在使用会话数组之前输入session_start()
。
另外,不要尝试<?php $loggenOnUser?>
,而是尝试<?=$loggenOnUser?>
。
【讨论】:
我在第一页开始了会话。我认为它只需要在它启动的地方启动一次,对吗? 没有。你应该在每一页上开始它。它不像真正的“开始”,而更像是“新建或加载”。【参考方案5】:试试这个,你忘了开头的 session_start()
<?php
session_start();
?>
<!doctype html>
<head>
</head>
<body>
<?php
echo $_SESSION["username"];
$loggenOnUser=$_SESSION["username"];
?>
<div class="gridContainer clearfix">
<div id="div1" class="fluid">
This page is being called by my login.php file.</div><div id="LoggedInUser" class="fluid ">Hi. I'm <?php $loggenOnUser?> </div>
<img id="homeImage" src="images/home.gif" /> </div>
</div>
</body>
</html>
【讨论】:
【参考方案6】:如果您已经完成了 echo 和 session start,这是绝对需要完成的,但仍然没有,那么看起来您在 $found_admin 数组中针对该用户名没有“任何内容”
$_SESSION["username"] = $found_admin["username"];
你确定那个数组里有东西吗?你能打印 $found_admin 数组吗?
【讨论】:
以上是关于如何使用 php 在不同页面中访问我的会话变量?的主要内容,如果未能解决你的问题,请参考以下文章