Top.Mail.Ru
Ответы

Как на PHP обрезать URL после обновления или возвращения на страницу?

В начале, запрос на MS SQL проверяет логин и пароль пользователя, затем в случае если, они совпадают, то пользователя при помощи данного условия оправляет на simple.php:

$result = sqlsrv_query($conn, $sql, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET));
if(sqlsrv_num_rows($result) >= 1) {
header("Location: simple.php");
} else {header("Location: index.php?nologin=1");}

Иначе нас отправляют на псевдостраницу с параметром nologin=1. Методом GET, через JS выводится сообщение:
<?php if($_GET['nologin'] == 1) {
echo '<script type="text/javascript">alert("Неправильный логин или пароль");</script>';
} ?>

После того, как пользователь вернётся на окно авторизации или после получения сообщения об ошибке, затем обновит страницу, сообщение будет выведено снова. Как этого избежать? Вероятно это должно быть что-то вроде:

$url = "http://test/index.php";
strtok($url, '?');

Но как это правильно реализовать? Помогите решить проблему. Если возможно распишите для чайников.

Для тех кто не понял, нужно чтобы после вывода сообщения кидало снова на simple.php, без параметра. А в случае перехода обратно происходила переадресация на страницу без параметра.

По дате
По рейтингу
Аватар пользователя
Новичок
6лет

Не передавай nologin в GET-параметре, а сохраняй в $_SESSION. А дельше:

if (!empty($_SESSION['nologin']) {
echo твой_js_код;
unset($_SESSION['nologin']);
}

Подробности: https://www.php.net/manual/ru/function.session-start.php