У меня есть две страницы, которые мне нужны для передачи информации о сеансе между ними. Вот первая страница.
<?php
session_start();
echo session_id()."<br>";
echo $_SESSION['test']."<br>";
Страница вторая.
<?php
session_start();
echo session_id()."<br>";
$_SESSION['test'] = 'test';
echo $_SESSION['test'];
Вторая страница находится в другом каталоге (в том же домене) и включает проверку подлинности Windows. Первая страница использует анонимную аутентификацию. Из выходных данных я вижу, что идентификатор сессии такой же, но на первой странице не отображается тестовая переменная, заданная на второй странице.
Я использую PHP в IIS 8.5 на сервере 2012 R2.
Любая помощь приветствуется.
Чтобы уточнить, я сначала вызываю вторую страницу, а на первой странице переменная не отображается.
Вам необходимо сначала инициализировать переменную значением, прежде чем использовать его.
First run page2.php so, that value of $_SESSION['test'] is set to test
using $_SESSION['test'] = 'test';
Now, run page1.php there you can see the value of $_SESSION['test']
using echo $_SESSION['test']."<br>";
Вы также можете выполнить эти шаги, чтобы использовать сессию простым способом, чтобы вам не приходилось делать session_start () снова и снова
1. config.php having session_start();
2. page1 having include_once('config.php');
echo session_id()."<br>";
echo $_SESSION['test']."<br>";
3. page2.php having include_once('config.php');
echo session_id()."<br>";
$_SESSION['test'] = 'test';
echo $_SESSION['test'];
Попробуйте закрыть сеанс на первой странице, возможно, ваш файл сеанса все еще открыт при вызове второй страницы, поэтому вы не видите данные. Попробуйте добавить session_write_close () к первой вызванной странице.
Проблема была с разрешениями на пути сохранения сеанса. Я изменил путь к тому, где обе директории могли написать, и это работает.