Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Пропадают переменные сессии при редикте на ту же страницу index.php (https://javascript.ru/forum/server/85681-propadayut-peremennye-sessii-pri-redikte-na-tu-zhe-stranicu-index-php.html)

wadim2 25.12.2023 22:54

Пропадают переменные сессии при редикте на ту же страницу index.php
 
Всем привет. Пропадают переменные сессии при редикте на ту же страницу index.php

Есть файл index.php, в нем есть:
session_start();
и вызов php файла (черещ форму <form>), в php файле создается наша переменная и сразу редикт на index.php

Теперь наша переменная должна быть доступна в index.php, но ее нет, последнее что писало:
Notice: Undefined index: login in /public_html/index.php on line 3

С индексом 100% все норм, сто раз была ошибка индекса ранее, решается она просто, тут не должно быть проблемы. Хотя хз,
эти рукожопые перекроили сессии, что там всё по-новому работает.

Редикт такой:
exit("<meta http-equiv='refresh' content='0; url= /index.php'>");

Nexus 26.12.2023 00:16

Тут без хрустального шара не обойтись, а свой я разбил.
Может на сам код попробуем посмотреть?

PS. редирект шикарный.

wadim2 26.12.2023 11:05

Я по сути описал код, его чуть чуть, сами накидать можете. Есть index.php, есть вызов php через форму, есть редикт, всё.

Nexus 26.12.2023 12:15

Цитата:

Сообщение от wadim2
Я по сути описал код, его чуть чуть, сами накидать можете.

Ну, то есть мне нужно накидать ваш код с ошибками, чтобы он не работал и сказать вам где я умышленно допустил ошибку.
Я правильно понял?

ruslan_mart 26.12.2023 13:33

wadim2,
попробуй редирект сделать иначе:

header('Location: /index.php');

wadim2 26.12.2023 17:20

Цитата:

Сообщение от Nexus (Сообщение 554315)
Ну, то есть мне нужно накидать ваш код с ошибками, чтобы он не работал и сказать вам где я умышленно допустил ошибку.
Я правильно понял?

У меня большой опыт, с кодом все ок. Раньше этот код работал. Тут дело в новом апаче, новом php, из-за них не работает. У меня был header(), по новым правилам header() устарел и нужно писать как я написал код в теме. Я думаю у Вас будет работать, так как старый сервер. Попробуйте на новом сервере, к примеру на хостинге beget.com, работать не будет. То есть, когда у Вас обновят хостинг, то Вы столкнётесь с той же проблемой, что и я.

ruslan_mart 26.12.2023 17:49

Header устарел? Ссылка на пруфы есть?

С meta тэгом редирект будет работать только в рамках браузера.

У вас после редиректа на index.php создается новый php "инстанс". В index.php есть вызов session_start()?

Nexus 26.12.2023 18:10

win10, Open Server Panel, Nginx v1.23, php (скорее всего fpm) v8.1.9
index.php:
<?php

session_start();

if (!empty($_SESSION['super-secret-token'])) {
    echo 'token has been found';
    exit;
}

?><form method="post" action="/form.php"><input type="submit"/></form>


form.php:
<?php

session_start();

$_SESSION['super-secret-token'] = time();

header('Location: /index.php', true, 302);

echo 'ok';


У меня все работает как и должно, никаких ошибок.

Цитата:

Сообщение от wadim2
по новым правилам header() устарел

Это где вы такую чушь прочитали?

Цитата:

Deprecated: header(): Passing null to parameter #3 ($response_code) of type int is deprecated
Если у вас эта ошибка, то это не значит, что функция header помечена как устаревшая. Это именно передача третьим параметром null'а помечена устаревшим "поведением".


Часовой пояс GMT +3, время: 22:05.