Как использовать хранить и использовать переменные сессии на разных страницах? - PullRequest
19 голосов
/ 30 марта 2011

При доступе к одной странице я хотел бы начать сеанс и сохранить переменную сеанса:

<?php
  session_start(); 
  $_SESSION['myvar']='myvalue';
?>

Затем на другой странице я хотел бы проверить, сохранена ли эта переменная сеанса:

<?php
    session_start();
    echo("1");
    if(isset($_SESSION['myvar']))
    {
        echo("2");
       if($_SESSION['myvar'] == 'myvalue')
       {
           echo("3");
           exit;
       }
    }
    ?>

Этот код не работает для меня.

Ответы [ 8 ]

22 голосов
/ 20 декабря 2014

Сеансы Шаг за шагом

  1. Определение сеанса раньше всего, до этого не должно быть никакого вывода, НЕТ ВЫХОДА

    <?php
    session_start();
    ?>
    
  2. Установите ваш сеанс на странице, и тогда у вас есть доступ на этой странице.Например, это page 1.php

    <?php
       //This is page 1 and then we will use session that defined from this page:
        session_start();
        $_SESSION['email']='email@example.com';
    ?>
    
  3. Использование и получение сеанса в 2.php

     <?php
    
    //In this page I am going to use session:
    
      session_start();
      if($_SESSION['email']){
      echo 'Your Email Is Here!  :) ';
      }
     ?>
    

ПРИМЕЧАНИЕ : комментарии не имеют вывода.

14 голосов
/ 11 сентября 2012

Все, что вы хотите сделать, это написать --- session_start ();----- на обеих страницах ..

<!-- first page -->
<?php
  session_start(); 
  $_SESSION['myvar'] = 'hello';
?>

<!-- second page -->
<?php
    session_start();
    echo $_SESSION['myvar']; // it will print hello 

?>
7 голосов
/ 30 марта 2011

Исходя из комментариев к этому вопросу, кажется, что отсутствие скорректированного session.save_path вызывает такое неправильное поведение обработчика сеансов PHP. Просто укажите каталог (вне корневого каталога вашего документа), который существует и доступен для чтения и записи PHP, чтобы это исправить.

1 голос
/ 30 марта 2011

Если вторая страница не имеет общего доступа к cookie-файлам сеанса, вам необходимо установить путь к cookie-файлам сеанса, используя session_set_cookie_params :

<?php
session_set_cookie_params( $lifetime, '/shared/path/to/files/' );
session_start();
$_SESSION['myvar']='myvalue';

И

<?php
session_set_cookie_params( $lifetime, '/shared/path/to/files/' );
session_start();
echo("1");
if(isset($_SESSION['myvar']))
{
    echo("2");
   if($_SESSION['myvar'] == 'myvalue')
   {
       echo("3");
       exit;
   }
}
0 голосов
/ 06 октября 2016

Попробуйте это

Первая страница

<?php
   session_start();
   $_SESSION['myvar']='myvalue';
?>

Вторая страница

 <?php
   session_start();
   echo $_SESSION['myvar'];
 ?>
0 голосов
/ 02 июля 2014

Начало сеанса:

Поместите код внизу вверху файла.

<?php session_start();?>

Сохранение переменной сеанса:

<?php $_SESSION['id']=10; ?>

Чтобы проверить, сохранены ли данныев переменной сеанса:

<?php if(isset($_SESSION['id']) && !empty(isset($_SESSION['id'])))
echo “Session id “.$_SESSION['id'].” exist”;
else
echo “Session not set “;?>

?> подробно здесь http://skillrow.com/sessions-in-php-4/

0 голосов
/ 10 февраля 2014

Каждый раз, когда вы начинаете сеанс (относится к версии PHP 5.2.54), session_start() создает новый идентификатор сеанса.

Вот исправление, которое сработало для меня.

File1.php

session_id('mySessionID'); //SET id first before calling  session start
session_start();

$name = "Nitin Hurkadli";
$_SESSION['username'] = $name;

File2.php

session_id('mySessionID'); 
session_start();

$name = $_SESSION['username'];
echo "Hello  " . $name;
0 голосов
/ 30 марта 2011

Попробуйте это:

<!-- first page -->
<?php
  session_start(); 
  session_register('myvar');
  $_SESSION['myvar'] == 'myvalue';
?>

<!-- second page -->
<?php
    session_start();
    echo("1");
    if(session_is_registered('myvar'))
    {
        echo("2");
       if($_SESSION['myvar'] == 'myvalue')
       {
           echo("3");
           exit;
       }
    }
    ?>
...