Переменная $ _SESSION не проходит и не знает, почему? он устанавливает, то не проходит

У меня есть сценарий входа в систему, закодированный в php и mysqli. при отправке и успешной аутентификации он перенаправляет на success.php для записи сеансов. моя страница успеха выглядит так.

<?php /** * Set cookies here if/as needed. * Set session data as needed. DO NOT store user's password in * cookies or sessions! * Redirect the user if/as required. */ $id = $_GET['id']; $_SESSION['partner_id'] = $id; $_SESSION['authenticated'] = TRUE; if (isset($_SESSION['partner_id'])) { echo("<script> <!-- location.replace(index.php); --> </script>"); } else { print "Session partner id not set"; } ?> 

Эта страница эффективно перенаправляется на мою страницу index.php. Однако мой индекс php не распознает переменную сеанса.

  <?php session_start(); // rest of code print "ths is the session var".$_SESSION['partner_id']; ?> 

который находится в верхней части страницы перед объявлением doctype.

на странице у меня тоже есть

 <?php if(isset($_SESSION['partner_id'])) { print "This is the session id variable".$_SESSION['partner_id']; } else { print "Session not set"; } ?> 

Верхняя проверка печатает пустую и нижний печатает сеанс не установлен ….

Я запутался…

Вам нужно session_start () на всех страницах, используя $ _SESSION

  <?php /** * Set cookies here if/as needed. * Set session data as needed. DO NOT store user's password in * cookies or sessions! * Redirect the user if/as required. */ session_start(); $id = $_GET['id']; $_SESSION['partner_id'] = $id; $_SESSION['authenticated'] = TRUE; 

Также … вы уверены, что $ _GET ['id'] имеет значение в нем?

И … это ваша форма, использующая POST или GET ?

Ive сделал эту глупую ошибку раньше, где форма использовала POST, и я возвращал переменную с GET и расстраивался. Просто возможность

Используйте session_start (); внутри всей страницы перед использованием переменной $ _SESSION в PHP. session_start (); функция используется для инициализации сеанса.

ваш success.php должен быть.

 <?php /** * Set cookies here if/as needed. * Set session data as needed. DO NOT store user's password in * cookies or sessions! * Redirect the user if/as required. */ session_start(); $id = $_GET['id']; $_SESSION['partner_id'] = $id; $_SESSION['authenticated'] = TRUE; if (isset($_SESSION['partner_id'])) { echo("<script> <!-- location.replace(index.php); --> </script>"); } else { print "Session partner id not set"; } ?> 

Исходный файл не содержал session_start (), как указано. однако теперь он работает без него по какой-то причине.

Я думаю, что проблема с кэшем или сервером

Добавление к ответам. Если вы не хотите писать session_start () при запуске каждой страницы, вы можете просто пропустить его, установив session.auto_start = 1 в файле php.ini, который автоматически запускает сеанс по запросу стр. См. Документацию по настройке сеанса PHP.