Отображение сообщения на странице входа после обновления пароля в PHP - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть система обновления паролей, которая работает нормально.Но проблема в том, что я не могу показать ни одного сообщения об успешном завершении, например «Пароль изменен!».Потому что после обновления пароля моя система перенаправляет пользователя на страницу выхода, которая, в свою очередь, перенаправляет на страницу входа.Я хочу показать это сообщение на странице входа только после обновления пароля.Я не могу попытаться поставить и перехватить сообщение из переменной $ _SESSION, так как при выходе из сессии сеанс разрушается.Буду признателен за любую хорошую идею на эту тему.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Несколько идей:

1) Используйте Cookie вместо $ _SESSION (который действительно будет уничтожен после начала нового сеанса).Если cookie-файл установлен, на экране отобразится сообщение (и удалите cookie-файл)

2). Не перенаправляйте сразу на страницу входа, а просто скажите: «Пароль изменен! Нажмите здесь, чтобы снова войти в систему».,Но вы можете безопасно уничтожить сеанс на этой странице.

3) Не уничтожайте сеанс вообще.Тот факт, что пароль изменен, не означает, что вы должны уничтожить сеанс.Если ваша сессия содержит что-то вроде: $_SESSION['validUser'] = 'Y' этого может быть достаточно?

0 голосов
/ 23 сентября 2019

Все предложения Эрвина Моллера являются хорошими предложениями и легко осуществимы.Я думаю, что это лучший способ (ы) сделать это, но если вы не хотите использовать какой-либо из этих методов, то вы можете передать переменную $_GET из одного перенаправления в другое в виде простого сообщения илизначение, представляющее сообщение:

$red_url = 'http://www.example.com/?msg=Password+has+been+reset';
header("Location: {$red_url}");
exit;

Убедитесь, что вы используете что-то вроде htmlspecialchars() или эквивалентное при выводе сообщения.Это позаботится о вставке вредоносного кода, но этот метод все еще позволяет конечному пользователю максимально гибко связываться с сообщениями вашего сайта.

Метод переменной будет аналогичен:

$red_url = 'http://www.example.com/?msg=1234';
header("Location: {$red_url}");
exit;

onстраница дисплея может каким-либо образом извлекать или переводить код msg:

<?php if(!empty($_GET['msg']) && is_numeric($_GET['msg'])): ?>
<h3 class="site-message"><?php echo myCodeToMessageFunc($_GET['msg']) ?></h3>
<?php endif ?>

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

** Эти 2 метода могут быть запутаны пользователем (безвредно, если вы чистите или управляете выводом) , поэтому cookie или сеанс лучше, но этодовольно простой метод обмена сообщениями.

...