Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2023, 13:40   #1
MilaNurRus
Новичок
Джуниор
 
Регистрация: 17.04.2023
Сообщений: 3
По умолчанию При переходе на новую страницу SESSION обнуляется (выдает null)

На странице logup.php всё записывается в SESSION['user']. Но почему-то в файле profile.php, когда я обращаюсь к этой переменной, пишет null. В этом же проекте в других файлах session спокойно все "переносит" из одного файла в другой.

logup.php
Код:
<?php 
// авторизация в системе
session_start();
require_once 'conf.php';

$user_name_enter = $_POST['us_login'];
$user_password_enter = $_POST['us_password'];

// ищем из бд строку с совпадающими данными
$check_user = mysqli_query($connect, "SELECT * FROM `users` WHERE `user_login` = '$user_name_enter' AND `user_password` = '$user_password_enter'");

// если найдется больше 0 таких строк, то отдаем строчку в $user
if (mysqli_num_rows($check_user) > 0) {

    $user = mysqli_fetch_assoc($check_user);

    // заполняем текущую сессию
    $_SESSION['user'] = [
        "id" => $user['user_id'],
        "login" => $user['user_login'],
        "email" => $user['user_email']
    ];


    echo var_dump($_SESSION['user']);

} else {

    $_SESSION['warn'] = 'Не верное имя или пароль';
}

?>
Здесь авторизация.

А в profile.php я пытаюсь вывести данные авторизованного пользователя, но просто null.

profile.php
Код:
<?php

require_once 'conf.php';
session_start();

echo var_dump($_SESSION['user']);

?>
Где может быть ошибка? В обоих есть session_start().

Последний раз редактировалось MilaNurRus; 17.04.2023 в 13:43.
MilaNurRus вне форума Ответить с цитированием
Старый 17.04.2023, 15:21   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А как эти файлы вообще собраны вместе? Зачем в начале каждого файла session_start();? Её достаточно вызвать один раз в главном файле, где включаются все эти файлы. Если же вы заходите каждый раз указывая имя файла, тогда в браузере может отсутствовать PHPSESSID cookie для этого адреса, тогда session_start() создаст новую сессию и массив $_SESSION считан не будет.
macomics вне форума Ответить с цитированием
Старый 17.04.2023, 20:18   #3
MilaNurRus
Новичок
Джуниор
 
Регистрация: 17.04.2023
Сообщений: 3
По умолчанию

Оба файла находятся в папке под названием "back3d", которая находится в domains (OpenServer). Ее я и запускаю. В файле conf.php (тоже в папке "back3d") находится соединение с бд:

Код:
<?php
header('Access-Control-Allow-Origin: *');

$connect = mysqli_connect('localhost', 'root', '', '3dmod');

if (!$connect){
    die('ERROR');
}
?>
Они все находятся на одном "уровне" в папке "back3d".

Насчет session_start();. Читала, что надо ставить в каждом файле, где используем сессии. Что именно вы предлагаете? Добавить session_start(); в conf.php? Чтоб функция работала везде?

И да, я захожу каждый раз вручную указывая имя файла, так как пытаюсь соединить react с php. И не совсем представляю, как это сделать. То есть у меня есть страница входа на реакт, которая подключена к logup.php. Тут делаются проверка - если есть пользователь в бд, то отправляются его данные в $SESSION['user']. Потом кликаю на кнопку "в профиль" и там вылезает null (то есть сессия не передает данные).

Еще пыталась отправить данные не из бд:

Код:
$_SESSION['user'] = [
        "id" => 12,
        "login" => 'mn',
        "email" => 'mn@mn.mn'
    ];
тоже пишет null.

Последний раз редактировалось MilaNurRus; 17.04.2023 в 20:38.
MilaNurRus вне форума Ответить с цитированием
Старый 17.04.2023, 21:13   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
require_once 'conf.php';
session_start();
Вы сначала отправляете заголовок, а потом пытаетесь создать сессию. Вы лог читали?
p51x на форуме Ответить с цитированием
Старый 17.04.2023, 21:35   #5
MilaNurRus
Новичок
Джуниор
 
Регистрация: 17.04.2023
Сообщений: 3
По умолчанию

Не знаю, что такое лог. А это да, я исправила - поменяла местами (нашла, что сначала начинаем сессию, а потом уже подключаем к бд), но всё равно возвращает null
MilaNurRus вне форума Ответить с цитированием
Старый 18.04.2023, 07:53   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

до старта сессий никакого вывода не должно быть.... хоть заголовки, хоть вывод текста, хоть ошибки
еще часто распространенная ошибка - utf-8 с BOM ... преобразуqnt в файл без BOM
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сессия сбивается на null при переходе на другую страницу Alena16 PHP 4 26.11.2021 09:31
Как убрать ошибку 404 при переходе на существующую страницу? Anna1991 Общие вопросы Web 1 29.01.2020 17:28
Отображении содержимого html в компоненте TWebBrowser при переходе на новую форму S.I.D. Общие вопросы Delphi 2 22.05.2013 16:00
Взять ссылку из страницы а потом при переходе на новую вставить её Alex1991 JavaScript, Ajax 2 04.01.2013 02:49
Refresh при переходе на страницу nikleb JavaScript, Ajax 8 20.12.2007 18:24