Session_start не поддерживает переменные только на домашней странице - PullRequest
0 голосов
/ 04 мая 2011

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

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

Ни одна из переменных сеанса не распознается с домашней страницы. Тем не менее, сессия на самом деле не убита - я могу вернуться в историю и все еще захожу на сайт. Будет ли причина, по которой домашняя страница должна вести себя иначе, чем любая другая страница?

Ответы [ 3 ]

0 голосов
/ 04 мая 2011

Убедитесь, что session_start() вызывается только один раз.Если вы вызываете его дважды, это может помешать обработке сеанса.Я бы порекомендовал вам вызывать session_start () на каждой странице, на которой пользователь может войти (честно говоря, я не вижу причин, чтобы не вызывать его на каждом периоде страницы, но кто-то, пожалуйста, исправьте меня, если это плохо), но только один раз.В этот момент вы можете проверить _SESSION и посмотреть, установлен ли ключ пользователя, вошедшего в систему.Если это так, перенаправьте их.

0 голосов
/ 04 мая 2011

, если вы звоните session_start() на каждой странице, и вы не знаете, что сеанс уже записан на ваших включите / требуют страницах, тогда используйте @ , как это @session_start()

примечание: , хотя не рекомендуется использовать @

для отправки пользователя наих личная страница, а не домашняя страница

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

home.php (необработанный код)

<?php if(!empty($_SESSION['user_id'])) {
header("Location : personal_page.php?id=".$_SESSION['user_id']);
exit();
} else {
//your page code
}
?>

для входа через страницы истории:

вы создаете logout.php для конечного пользователясеанс, не забудьте начать сеанс на этой странице !, используя session_start() в самом начале вашего скрипта.Таким образом,

session_start();
session_unset();
session_destroy();

будет правильной последовательностью для завершения сеанса пользователя.

ссылка

Happy To Help:)

0 голосов
/ 04 мая 2011

Нет, не должно быть иначе. Чтобы увидеть, какие переменные доступны в вашем $ _SESSION, вы можете сделать это

var_dump($_SESSION);

Если он пуст, значит, есть проблема. Вы можете попробовать просмотреть session_id с помощью метода

echo session_id();

Это должен быть один и тот же session_id как на вашей зарегистрированной странице, так и на домашней странице. Если это не так, может быть, вы испортили файлы cookie?

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