Не могу получить информацию о сеансе от одного php paganother - PullRequest
0 голосов
/ 10 июня 2018

Я искал ответы здесь, но пока у меня ничего не получалось.Я изучаю HTML и при простом входе в систему я столкнулся с некоторыми проблемами.Я использую XML в качестве «базы данных» и PHP для получения информации.Вот как выглядит мой php-код:

<?php
$error = false;
if(isset($_POST['login'])){
    $username = $_POST['username'];
    $password = $_POST['password'];
    if (file_exists('users/'.$username.'.xml')){
        $xml = new SimpleXMLElement('users/'.$username.'.xml',0,true);
        if($password == $xml->password){
            session_start();
            $_SESSION['username'] = $username;
            $direccion = $xml->direccion;
            $_SESSION['direccion'] = $direccion;
            header('Location: carta.php');
            die;
        }
    }
    $error = true;
}
?>

Я знаю, что могу искать по файлам XML и правильно находит пользователя, потому что он перенаправляет меня в carta.php и выдает ошибку, если он не найден, но на другой странице php я не могу получить информацию от:

<?php echo $_SESSION['username']; ?> // This code is inside html code

Ошибка, которую я получаю: Уведомление: неопределенный индекс: имя пользователя в C: ....

Принимая во вниманиеУчетная запись Я уже инициализирую сеанс с

<?php session_start();?>

в начале, почему я не могу получить информацию из эха?

Заранее спасибо,

Лука.

1 Ответ

0 голосов
/ 10 июня 2018

PHP-сессия работает сразу, как только вы ее инициализировали.PHP может обрабатывать сеанс двумя обычными способами, как сеанс cookie или локально сохраненный сеанс на внутреннем сервере.Последний по умолчанию.PHP также может использовать Memcache / Redis для сессий.

Пожалуйста, сначала убедитесь, что ваши сессии PHP работают.Вы сделали бы это простым тестом.Также помните, что session_start () необходимо включить во все файлы, в которых вы ожидаете использовать среду сеанса!

<?PHP
 session_start();
 $_SESSION["mytest"] = time();
?>

, а затем попытаться отобразить эту временную метку Unix из другого файла.

<?PHP
 session_start();
 echo "SESSION var(mytest): ".$_SESSION["mytest"]."\n";
?>

Это должно привести к тому, что переменная SESSION "mytest" установлена ​​в одном файле и может быть получена из другого файла.Не забудьте запустить этот сеанс в каждом файле.Это то, что «извлекает» среду SESSION.

Если это работает для вас, вы можете перейти к своему коду $ _SESSION ["username"], и вы знаете, что с вашим кодом что-то не так, а несреда сеанса.

Кроме того, session_start () необходимо инициализировать как некоторые из первых вещей, обычно не рекомендуется инициализировать его внутри вашего состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...