PHP - сессия недоступна на других страницах

0

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

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

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

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

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

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

РЕДАКТИРОВАТЬ:

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

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 ['admin'] не задано, перенаправляйтесь на логин). Это проверяется вручную, удалив сеанс на инструменте chrome dev, и обновление страницы приведет меня к странице входа.

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

echo $_SESSION['admin'];
  • 8
    Если вы ничего не поместите в сеанс, он будет пустым.
  • 0
    Где вы устанавливаете переменные сеанса ???
Показать ещё 3 комментария
Теги:
session
session-variables

3 ответа

0

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

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

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

где сеанс хранился в домене с именем

www.samplewebsite.com

Пока я пытался получить доступ к сеансу из

samplewebsite.com/sample.php

Чьи сеансы проводились в домене

samplewebsite.com

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

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

0

Это не верно:

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

просто

session_start();

на КАЖДОЙ странице в начале

0

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

например:

session_start();

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню