2016-02-27 2 views
0

У меня есть четыре страницы до сих пор:Session, кажется, исчезает после заголовка перенаправления

index.php 
login.php 
setsessionconfig.php 
account.php 

фон:

Когда я нажимаю логин кнопка/facebook из индекса ж он берет меня войти .php, который, если пользователь уже зарегистрирован на сайте, он не просматривает сайт facebook, он просто продолжается. Login.php тянет информацию, необходимую для сессии, то заголовок перенаправляет setsessionconfig.php который имеет код ниже:

login.php имеет 5-секундную задержку для загрузки визуального затем перенаправляет на ...

header("refresh:5;url=".URLBASE."/setsessionconfig.php?uid=".$uid."&email=".$email); 

setsessionconfig.php

$uid = isset($_GET['uid']) ? $_GET['uid'] : ""; 
$email = isset($_GET['email']) ? $_GET['email'] : ""; 

if($uid != "" && $email != "") { 

    session_start(); 
    $_SESSION[SESSION_UID] = $uid;   
    $_SESSION[SESSION_EMAIL] = $email; 
    $_SESSION[SESSION_IS_LOGGEDIN] = 1; 
    header("Location: account"); 

} 

Проблема

Когда setsessionconfig.php перенаправляет на account.php, он проверяет, вошли ли пользователи в систему через глобальную переменную SESSION_UID, затем отображает информацию о пользователе ИЛИ отображает текст «вы не вошли в систему». Независимо от того, что я делаю, я думаю, что заголовок, перенаправляемый на account.php, уничтожает переменные сеанса.

Я даже проверил, был ли сеанс доступен со следующим кодом в account.php.

function is_session_started() 
{ 
    if (php_sapi_name() !== 'cli') { 
     if (version_compare(phpversion(), '5.4.0', '>=')) { 
      return session_status() === PHP_SESSION_ACTIVE ? TRUE : FALSE; 
     } else { 
      return session_id() === '' ? FALSE : TRUE; 
     } 
    } 
    return FALSE; 
} 
if (is_session_started() === FALSE) 
    echo "<script>console.log('FALSE');</script>"; 
else 
    echo "<script>console.log('TRUE - ".session_id()."');</script>"; 

К сожалению, эта часть фактически возвращает значение TRUE и идентификатор сеанса ... Так я вроде застрял, потому что я никогда не имел этот вопрос с сессии до ...

+0

Это не является допустимым заголовок переадресации. // Вы проверили, правильно ли прошел идентификатор сеанса? – CBroe

ответ

0

попробуйте использовать exit(); после заголовка

+0

yeah exit(); похоже, тоже не работает. Он просто перенаправляет на account.php и отображает текст «Вы не вошли в систему». –

0

Поскольку функция is_session_started, возвращается TRUE и также возвращает идентификатор сеанса, очевидно, что идентификатор сеанса передается должным образом.

Я надеюсь, что код account.php выглядит как этот

<?php    
session_start(); 
if (! empty($_SESSION['SESSION_UID'])) 
{ 
?> 

your code here 

<?php 
} 
else 
{ 
    echo 'You are not logged in.'; 
} 
    ?> 

Edit:

Попробуйте

$_SESSION['SESSION_UID'] = $uid;   
    $_SESSION['SESSION_EMAIL'] = $email; 
    $_SESSION['SESSION_IS_LOGGEDIN'] = 1; 
+0

Да, это то, что у меня есть ... он все равно возвращает «Вы не вошли в систему». –

+0

Предоставляет ли он надлежащий сеанс uid, когда он отражается в account.php? echo ($ _SESSION ['SESSION_UID']); – Visrozar

+0

Я тоже пробовал ... после заголовка в setsessionconfig.php перенаправляется на account.php, как будто переменные сеанса никогда не были установлены. –

Смежные вопросы