Я только что перенес свой веб-сайт со своего локального сервера WAMP на работающий HTTPS-сервер 1and1.Он отлично работает на локальном сервере, но на работающем сервере сессионные переменные уничтожаются, когда я пытаюсь войти в систему. Я знаю, что база данных работает нормально и все запросы успешно выполняются после некоторого тестирования.
Проблема в том, что переменная сеанса создается, когда я запускаю сценарий входа в систему, но как только страница перезагружается и выполняет «проверку сеанса», переменная больше не существует.Из-за этого сайт просто перезагружает форму входа в систему, если условие if не выполняется.
Вот код для обоих сценариев.Я не знаю, почему это происходит, поскольку весь веб-сайт работает через HTTPS, поэтому это не проблема с HTTP / HTTPS и т. Д.
СКРИПТ ВХОДА
<?php
date_default_timezone_set("Europe/London");
require("db_connect.php");
if ($sql)
{
$email = $_POST['userEmail'];
$password = $_POST['userPassword'];
$checkDetails = mysqli_query($sql, "SELECT * FROM users WHERE email='$email'");
while ($details = mysqli_fetch_array($checkDetails))
{
$hashedPassword = $details['password'];
if(password_verify($password, $hashedPassword))
{
//Passwords Match
//Update last login time in the database
$now = date("Y-m-d H:i:s");
$lastLoginQuery = mysqli_query($sql, "UPDATE users SET lastLogin='$now' WHERE email='$email'");
if ($lastLoginQuery)
{
//Initialise session
session_start();
$_SESSION['user'] = $email;
header("Location: ../");
}
else
{
echo "There was an error logging you in. Please try again!";
}
}
else
{
echo "The details you entered are incorrect. Please return to the login page. If the problem persists, contact an administrator.";
}
}
}
else
{
echo "There was a problem connecting to the database";
}
?>
Сценарий проверки сессии
<?php
//Check if a session exists and load the page if it does
session_start();
if (isset($_SESSION['user']))
{
//Check if the session has timed out
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800))
{
//Last user action performed more than 30 minutes ago. Log out now.
session_unset();
session_destroy();
header("Location:./");
}
//If the session hasnt timed out. Reset the last activity time.
$_SESSION['LAST_ACTIVITY'] = time();
//Continue to load content
include('./includes/main.php');
}
else
{
// Load login page
include('./includes/login_form.php');
}
?>