【问题标题】:How can I access my session variable in a different page with php?如何使用 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; 这应该是这样的

标签: php html session redirect


【解决方案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 数组吗?

      【讨论】:

        猜你喜欢
        • 2012-04-14
        • 2011-08-17
        • 2013-08-16
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-21
        相关资源
        最近更新 更多