2015-01-07 4 views
0

У меня есть сайт samplewebsite.com, а функция входа и сеанс работают нормально.PHP - сеанс недоступен на других страницах

Теперь я создаю новую страницу с участием сеанса, запущенного на странице входа в систему, которая находится на samplewebsite.com/sample.php. На данный момент файл содержит только следующий код.

session_start(); 
if(isset($_SESSION)){ 
print_r($_SESSION); 
} 

Это выводит пустой массив. Когда я проверяю инструменты разработчика Chrome, на вкладке «Куки» есть PHPSESSID, который, как я полагаю, означает, что сеанс действительно запущен.

Я ужасно расстроен, почему на моем сайте samplewebsite.com я вошел в систему, и сессия подобрана правильно, а на samplewebsite.com/sample.php Я не могу получить сеанс, в котором я нуждаюсь вообще.

Есть ли какая-то ошибка в конфигурации сеанса сервера? Что могло быть неправильным или каковы возможные причины этой проблемы?

EDIT:

Это фрагмент моего файла входа в систему.

include "db.php"; 
if (!isset($_SESSION)){session_start(); } 

if (isset($_SESSION['admin'])){header("Location: /"); } 

if(isset($_POST['submit'])){ 

    $query = mysql_query("Select * from users where `username`='".mysql_real_escape_string($_POST['username'])."' and `password`='".md5(mysql_real_escape_string($_POST['password']))."'"); 

    if(mysql_num_rows($query) > 0){ 

     $row = mysql_fetch_assoc($query); 

     $_SESSION['admin'] = $row['ID']; 

     header("Location: /"); exit(); 


    } 
    else{ 

     echo "<script>alert('Account Invalid')</script>"; 

    } 


} 

Сеанс инициализации, потому что, если не я перенаправлены на страницу входа в систему (из-за функции переадресации на index.php, где, если $ _SESSION [ «админ»] не установлен, перенаправлять для входа) , Это проверено вручную, удалив сеанс на инструменте hrome's, и обновление страницы приведет меня к странице входа.

Итак, я вошел в систему, и я вижу, что мой сеанс работает над samplewebsite.com, но на моей другой вкладке в samplewebsite.com/sample.php я не могу откликнуться на $ _SESSION ['admin'], когда я пытаюсь

echo $_SESSION['admin']; 
+8

Если вы не ставите что-либо внутри сеанса, оно будет пустым. –

+0

Где вы устанавливаете переменные сеанса ??? –

+0

включить error_reporting и display_errors, убедитесь, что выходной сигнал не был отправлен до вызова session_start() – donald123

ответ

0

По умолчанию массив SESSION пуст, вы должны инициализировать переменные.

, например:

session_start(); 

$_SESSION['test'] = 'my test'; 

if(isset($_SESSION)){ 
print_r($_SESSION); 
} 

Тогда вы увидите вывод 'мой тест'.
Не забудьте начать сеанс на каждой странице php, чтобы иметь возможность доступа к вашим vars.

0

Это неправильно:

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

просто

session_start(); 

на каждой странице в начале

0

Хотя это может быть не соответствующий ответ, у меня теперь есть представление о том, почему я не мог Не забирай сессию.

Как я смотрел на вкладке Cookies инструментария хром. Я заметил, что сеансы хранятся в разных доменах.Возможно потому, что я вошел в системе

http://www.samplewebsite.com/login.php 

, где сеанс был сохранен в домене с именем

www.samplewebsite.com 

В то время как я пытался получить доступ к сеансу из

samplewebsite.com/sample.php 

Чьих сессии были основаны на домен

samplewebsite.com 

Я полностью упускал из виду URL-адреса, которые были глупой ошибкой, я полностью ослеп между различиями между этими двумя доменами и, возможно, просто не имел общих знаний.

Спасибо за ваши быстрые ответы.

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