如何使用php访问不同页面中的会话变量?

时间:2015-02-09 06:12:04

标签: php html session redirect

每个人都在login.php页面的顶部启动了session变量。然后设置会话,我使用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>

似乎无法理解为什么我无法访问另一个页面上的会话变量。任何帮助将不胜感激。谢谢!

6 个答案:

答案 0 :(得分:2)

*修改

  • 您忘了echo
  • 您需要在访问会话之前启动会话 变量

    session_start()放在您的页面顶部 把echo Hi. I'm <?php echo $loggenOnUser; ?>

答案 1 :(得分:2)

检查此网站:http://php.net/manual/en/function.session-start.php

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

答案 2 :(得分:2)

确保使用

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>

答案 3 :(得分:1)

在使用会话数组之前,应该放置session_start()。 另外,代替<?php $loggenOnUser?>尝试<?=$loggenOnUser?>

答案 4 :(得分:1)

如果你完成了回声和会话启动,这绝对需要完成,但仍然没有,那么看起来你什么都没有&#39;在针对该用户名的$ found_admin数组中

$_SESSION["username"] = $found_admin["username"];

你确定该阵列中有什么东西吗?你能打印$ found_admin数组吗?

答案 5 :(得分:1)

试试这个,你忘记了开头的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>