Таким образом, после МНОГО проб и ошибок я настроил что-то, чтобы проверить, установлен ли мой сеанс или нет, что выглядит так:
<?php
session_start();
if (isset($_SESSION['email'])) {
echo "Logged In!";
}
else {
echo "NOT LOGGED IN!";
}
?>
И я понимаю, что после входа в систему (который перенаправляет на домашнюю страницу сайта) сеанс не устанавливается, пока я не перезагрузлю всю домашнюю страницу.
Кто-нибудь испытывал что-то подобное и / или знает, как обойти эту проблему?
Заранее спасибо!
Этот фрагмент кода работает для меня в качестве теста. Убедитесь, что ваш порядок операций соответствует этому. Если это не сработает, убедитесь, что вы разрешаете использование куки в вашем браузере. В противном случае может быть что-то не так в вашей конфигурации PHP / Apache.
<?php
session_start();
if (!isset($_GET['test']))
{
$_SESSION['email'] = "something ".time();
header('location:?test');
die;
}else{
echo 'Value: "' .$_SESSION['email']. '"';
echo '<br /><br /><a href="?">< Do again</a>';
die;
}
?>
Ваши страницы должны быть настроены так в этом порядке (особенно session_start()
):
login.php
<?php
session_start();
// 1) Some code here to check database if username and password check out
// 2) If username and password check out and validation is good
// 3) Redirect to your next page (index.php in this case)
?>
index.php (домашняя страница)
<?php
session_start();
?><!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1><?php
if(isset($_SESSION['email'])) { ?>
EMAIL IS SET!! Great job!
<?php } else { ?>
UM...No..<?php } ?></h1>
</body>
</html>
Спасибо за помощь, ребята, но я нашел проблему.
Видимо, я должен быть очень конкретным с моим URL в файле перенаправления.
я имел header('location: http://domain.com');
вместо
header('location: http://www.domain.com');
…Facepalm
У меня было ужасное время с этим. У меня есть индексная страница, которая загружается каждый раз, а внутри содержимого div загружает конкретные php-скрипты через include. Таким способом я управляю навигацией по сайту, передавая переменные GET в index.html, поэтому моя страница индекса загружается каждый раз, независимо от того, какой контент вы просматриваете. Самая первая строка index.html была:
<?php
session_start();
Некоторые из моих php-скриптов, работающих как include на странице индекса, устанавливают переменные сеанса, затем перенаправляют на страницу индекса, и переменная сеанса не будет там, или они не будут установлены на то, что они должны быть. Это сводило меня с ума, я мог ctrl-F5, и иногда они появлялись, а иногда нет. Единственное, что я могу понять, это то, что он как-то открывал разные сессии для разных URL, которые были в адресной строке (под разными URL я имею в виду те, которые имели разные параметры GET. Простое помещение этого в начало моего index.html решило все мои проблемы Я предполагаю, что это приводит к тому, что один и тот же сеанс открывается каждый раз:
<?php
session_name('SessName');
session_start();