Данные сеанса доступа php между HTTPS и HTTP

Спасибо за ваши ответы. Я обновил свой код сеанса PHP.

У меня есть (HTTPS) -логин. 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

7
задан Cody Gray 7 May 2011 в 14:03
поделиться