如何使用 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()&lt;?php echo $loggedOnUser; ?&gt; 这应该是这样的 【参考方案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 &lt;?php echo $loggenOnUser; ?&gt;

【讨论】:

添加了 session_start 和 但仍然没有显示在新页面的任何地方。【参考方案3】:

查看本站:http://php.net/manual/en/function.session-start.php

您需要在所有 php 文件中写上session_start(),最好在顶部。

【讨论】:

【参考方案4】:

您应该在使用会话数组之前输入session_start()。 另外,不要尝试&lt;?php $loggenOnUser?&gt;,而是尝试&lt;?=$loggenOnUser?&gt;

【讨论】:

我在第一页开始了会话。我认为它只需要在它启动的地方启动一次,对吗? 没有。你应该在每一页上开始它。它不像真正的“开始”,而更像是“新建或加载”。【参考方案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 在不同页面中访问我的会话变量?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 会话变量的安全性如何?

PHP会话已经开始[重复]

php检索会话变量以限制对页面的访问[重复]

如何从本地的 PHP session_start() 检查不同的变量? [复制]

如何使用 JQUERY 读取 SESSION 变量

在使用 PHP 的 SESSION 中传递变量的可靠性如何