Спасибо за ваши ответы. Я обновил свой код сеанса PHP.
У меня есть (HTTPS) -login.php, который остается HTTPS, т. Е. Как только пользователь вошел в систему, он перейдет на панель учетной записи. Теперь проблема заключается в том, что пользователь, войдя в систему, нажимает на панель инструментов на странице (HTTP) -about-us.php, сеанс не передается по HTTP, поскольку у меня есть session.cookie_secure = 1, то есть хороший пользователь выходит из системы. Однако когда пользователь возвращается на страницу панели мониторинга, он также выходит из системы по протоколу HTTPS?
Я полагаю, что мне не хватает чего-то, что вызывает эту проблему. Вот мой код:
Это заголовочный файл PHP require () ed для начала сеанса, т.е. на странице login.php:
session_start();
session_regenerate_id(true); /*avoid session fixation attempt*/
/*Create and check how long session has been started (over 5 mins) regenerate id - avoid session hijack*/
if(!isset($_SESSION['CREATED']))
{
$_SESSION['CREATED'] = time();/*time created session, ie from login/contact advertiser/email_confirm only ways for new session to start*/
}
elseif(time() - $_SESSION['CREATED'] > 300)
{
/*session started more than 5 mins(300 secs) ago*/
session_regenerate_id(true); /*change session ID for the current session and invalidate old session ID*/
$_SESSION['CREATED'] = time(); /*update creation time*/
}
/*Check if user is logged in*/
if(!isset($_SESSION['loggedin']))
{
$_SESSION['loggedin']=1;/*used to track if user is logged in on pages*/
}
/*if return false browser supports standard ob_start();*/
if(ob_start("ob_gzhandler")){ob_start();}
Это заголовочный файл PHP require () ed на каждой странице, чтобы проверить, запущен ли уже сеанс:
session_start();
$session_errors=0;/* if>0 user not logged in*/
/*check if session is already initiated*/
if(isset($_SESSION['CREATED']))
{
if(time() - $_SESSION['CREATED'] > 300)
{
/*session started more than 5 mins(300 secs) ago*/
session_regenerate_id(true); /*change session ID for the current session and invalidate old session ID*/
$_SESSION['CREATED'] = time(); /*update creation time*/
}
}
elseif(!isset($_SESSION['CREATED'])){$session_errors++;}/*user not logged in*/
/*Check if user is logged in*/
if(!isset($_SESSION['loggedin'])){$session_errors++;}/*user not logged in*/
if(ob_start("ob_gzhandler")){ob_start();}
Также при любом использовании это код для включения HTTPS на нечувствительных страницах, таких как about-us.php
if ($_SERVER['SERVER_PORT']!=80)
{
$url = "http://". $_SERVER['SERVER_NAME'] . ":80".$_SERVER['REQUEST_URI'];
header("Location: $url");
}
Еще раз спасибо за любую помощь, ребята, daza166