Все, я запустил переменную сеанса вверху страницы 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"); ?>

Вот html-страница, которую вызывает мой php-файл:

 <!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>

Не могу понять, почему я не могу получить доступ к переменной сеанса на другой странице. Любая помощь будет принята с благодарностью. Спасибо!

5
CloudyKooper 9 Фев 2015 в 09:12

6 ответов

Лучший ответ

Убедитесь, что вы используете

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>
5
Angry 84 9 Фев 2015 в 06:40

Если вы выполнили эхо и запуск сеанса, что абсолютно необходимо, но по-прежнему ничего, то похоже, что у вас нет ничего в массиве $ found_admin против этого имени пользователя.

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

Вы уверены, что в этом массиве что-то есть? Можете ли вы распечатать массив $ found_admin?

1
Amit 9 Фев 2015 в 06:38

Попробуйте это, вы забудете 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>
1
Adrian Cid Almaguer 9 Фев 2015 в 06:27

Вы должны поставить session_start() перед использованием массива сеанса. Также вместо <?php $loggenOnUser?> попробуйте <?=$loggenOnUser?>.

1
banana_Ai 9 Фев 2015 в 06:18

Посетите этот сайт: http://php.net/manual/en/function. session-start.php

Вам нужно писать session_start() во всех ваших php файлах, лучше всего вверху.

2
Chasevanb 31 Мар 2017 в 06:14

*редактировать

  • Вы забыли echo
  • Вам необходимо начать сеанс до доступа к сеансу переменные

    поместите session_start() вверху страницы поместите эхо Hi. I'm <?php echo $loggenOnUser; ?>

2
Bender 9 Фев 2015 в 06:24