Значения $ _SESSION не удерживаются!

Я пишу систему входа пользователя, и я (как и многие другие) испытываю проблемы с моими сеансами.

Вот указатель из сценария входа, когда входы проверяются:

session_start(); $_SESSION['id']=$id; header('location: memberhome.php'); 

Вот первая вещь на memberhome.php:

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

И позже в memberhome.php:

 You are logged in as: <?php echo $id; ?> 

Проблема заключается в $ _SESSION ['id'], по-видимому, пустой, поэтому echo $ id ничего не печатает.

Альтернативный вариант, который также НЕ работает:

 //removed session_start and $_SESSION bit from the top You are logged in as: <?php session_start(); echo $_SESSION['id']; ?> 

ТЕПЕРЬ, вот странная часть. Этот метод работает:

 You are logged in as: <?php echo session_start();$_SESSION['id']; ?> 

Вы можете видеть, что session_start () перемещается ПОСЛЕ эхо. Это работает, когда страница загружается из сценария входа. Однако, после обновления, он НЕ работает еще раз.

Я попробовал кучу альтернатив и провел несколько часов, чтобы найти ответы на предыдущие вопросы. Я также посмотрел на свой phpinfo () на что-то подозрительное и ничего не нашел. Это полностью зависит от моего прогресса. Благодаря!

Прежде всего, включите отладку:

 error_reporting(E_ALL); ini_set('display_errors', '1'); 

Во-вторых, session_start () должен находиться в верхней части страницы. Так что вы написали;

 You are logged in as: <?php echo session_start();$_SESSION['id']; ?> 

никогда не будет работать.

Следующая строка должна быть в верхней части страницы, перед любым HTML и т. Д.

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

Ты пробовал:

print_r($_SESSION);

изучить содержание сессии?

Убедитесь, что вы вызываете session_start() прежде чем вы выводите что-либо на странице. Стандартные сеансы на основе файлов cookie требуют обмена информацией заголовка, которая должна быть выполнена до отправки любого содержимого.

Скорее всего, вы работаете с выходной буферизацией, поэтому она иногда работает, а иногда – нет. Вообще говоря, придерживайтесь начала сеанса перед созданием любого выхода, вы обнаружите, что ваш код работает лучше.

использование

ob_start (); @session_start ();

в верхней части обеих страниц