Совместное использование экземпляров сеанса в PHP

#php #session

#php #сеанс

Вопрос:

Я хочу использовать сеанс в PHP. Но это показывает некоторые проблемы в моем сценарии.

Я хочу использовать один и тот же сеанс в 3 разных файлах PHP.

 ./sessionTest/testing1.php
./testing2.php
./testing3.php
  

если я сохраню некоторую информацию в $ _SESSION в testing1.php , я не смогу получить доступ к той же информации в других 2 файлах

что я должен сделать, чтобы эти 3 файла совместно использовали один и тот же экземпляр сеанса?
Существует ли какой-либо другой способ (кроме cookie) сделать это возможным?

P.S. Эти 3 файла выполняются разными вызовами, не могут включать один файл в другой с помощью функций include() или require().

Добавлена функция session_start() вверху, но по-прежнему не использует один и тот же сеанс.

Комментарии:

1. убедитесь, что session_start() вызывается в самом верху этих файлов

2. @Shakti: Абсолютно верно. Вы должны добавить это в качестве ответа .

3. Я добавил session_start() в верхней части каждого файла.. но эти файлы не используют общий сеанс. я сомневаюсь, что для этих файлов были созданы разные сеансы.

Ответ №1:

Вот так 🙂

 //<-- testing1.php -->
<?php
session_start();

$_SESSION['value'] = "Text!";
?>


//<-- testing2.php -->
<?php
session_start();

echo $_SESSION['value']; //Text!

?>
  

Комментарии:

1. для меня он отображается пустым. Возможно, это из-за разного пути для тех 2 файлов, которые являются ./sessionTest/testing1.php и ./testing2.php .

2. Это не имеет значения, сеанс не привязан к пути.

3. Вы можете создать файл с помощью <?php echo phpinfo(); ?> и искать категорию сеанса. Возможно, он отключен по какой-то причине

Ответ №2:

Посмотрите этот урок о сеансах PHP, возможно, это поможет вам понять, как работать с сеансами

Ответ №3:

Найдите iehttpheaders для MSIE или web developer toolbar / firebug для Firefox и проверьте, удаляется ли файл cookie вашим PHP-кодом / представлен. Также проверьте путь и флаги в заголовке setcookie.

Ответ №4:

Отключены ли ошибки PHP? Если да, то у вас могла быть проблема в коде, и вы просто не видели ее? У меня было такое, когда у меня было немного пробелов в выходном потоке перед началом сеанса, что означало, что сеанс прервался, потому что заголовок сеанса не был отправлен первым. Конечно, из-за отсутствия отображения ошибок php не было очевидно, почему переменные были равны null.

Ответ №5:

Просто обновление, поскольку у меня возникли некоторые проблемы здесь. Использование имя_сессии_() может быть полезно, если на сайте имеется несколько сеансов / файлов cookie. Посмотрите в настройках вашего браузера, чтобы увидеть, какие файлы cookie хранит браузер. Я обнаружил, что вам приходится часто удалять эти файлы cookie, чтобы увидеть, что происходит, если вы используете разные сеансы.

 <?php
  session_name('mySession');
  session_start();
  $_SESSION['value'] = "Text!";
?>

<?php
  session_name('mySession');
  session_start();
  echo $_SESSION['value'];
?>