2013-08-31 2 views
0

Я избиваю свою голову над этим. Мой код практически идентичен другим проектам, в которых это работает. Вот как я это делаю:Сессия не поддерживается после перенаправления страницы

session_start(); 
set_up_session($username); 
redirect_to('index.php'); 

И две функции:

function redirect_to($location=null) { 
     if($location!=null) { 
     header("Location: {$location}"); 
     exit; 
     } 
    } 

    function set_up_session($username) { 
     session_start(); 
     $_SESSION['user_id']=$id; 
     $_SESSION['logged_in']=true; 
     $_SESSION['username']=$username; 
    } 

если я закомментируйте редирект и эхо любой из $_SESSION вар-х, вар правильно читает. Но после перенаправления сессия заканчивается.

Это то, что находится на следующей странице.

<?php if (!isset($_SESSION['logged_in'])) { ?> 

// do stuff <-- this is what gets shown showing session is no longer active 

<?php } else { ?> 

<p>Hi, <?php echo $_SESSION['username']; ?></p> 


<?php } ?> 

ответ

0

убедитесь, что страница, которую вы перенаправлении имеет session_start() в верхней части документа

if(!isset($_SESSION)){ 
    session_start(); 
} 
+0

Это не так, это нормально. Если вы хотите, чтобы страница распознавала сеанс, вам также нужно сделать эту страницу частью сеанса. Я отредактировал свой ответ, чтобы остановить вашу ошибку. – Vector

+0

Я исправил ошибку заголовка; но что, если я не хочу, чтобы сеанс был запущен для гостевого пользователя? (или это ничего не навредит, если не заданы параметры var) – KickingLettuce

+0

Гость не будет частью сессии, если они не получили переменные сеанса через систему входа и т. д. – Vector

0

Мой первый шаг, который я сделал бы это попробовать это на следующей странице:

<?php 
    if (isset($_SESSION['logged_in'])) { 
     echo $_SESSION['username']; 
    } else { 
     //do stuff 
    } 
?> 

У меня была проблема с ранее опубликованной в работе с сеансами. Мое решение проблемы состояло в том, чтобы установить $ _SESSION []; к переменной. EX:

<?php 

    $Username = "Guest"; //Set your variable before you actually need it. (This is what fixed my problem) 
    if (isset($_SESSION['logged_in'])) { 
     $Username = $_SESSION['username']; 
    } 


?> 

Примечание: Вы можете изменить, если (Исеть ($ _ SESSION [ 'logged_in'])), чтобы вместо того, чтобы проверить, если имя пользователя установлен. Например:

<?php 
    $User = "Guest"; 
    if (isset($_SESSION['username'])) { 
     $User = $_SESSION['username']; 
    } else { 
     //do stuff 
    } 

?> 

Кроме того, как указано другим пользователем, убедитесь, что страница перенаправлять на есть session_start(); функции в нем. В противном случае это не сработает.

+0

Эй, спасибо за советы; однако, я не мог заставить эту работу даже после всех из них ... – KickingLettuce

+0

На следующей странице, где у вас есть код, чтобы проверить, установлен ли сеанс, есть ли у вас «session_start();» сразу после тэга jffy

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