$ _SESSION значения не хранятся! - PullRequest
2 голосов
/ 24 февраля 2011

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

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

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 () что-то подозрительное и ничего не нашел.Это полностью то, от чего зависит мой прогресс.Спасибо!

Ответы [ 5 ]

1 голос
/ 24 февраля 2011

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

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'];
?>
0 голосов
/ 24 февраля 2011

использовать

ob_start ();@session_start ();

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

0 голосов
/ 24 февраля 2011

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

0 голосов
/ 24 февраля 2011

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

0 голосов
/ 24 февраля 2011

Вы пробовали:

print_r($_SESSION);

проверить содержимое сеанса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...