Top.Mail.Ru
';\n} ?>\nПосле того, как пользователь вернётся на окно авторизации или после получения сообщения об ошибке, затем обновит страницу, сообщение будет выведено снова. Как этого избежать? Вероятно это должно быть что-то вроде:\n$url = \"\nhttp://test/index.php\n\";\nstrtok($url, '?');\nНо как это правильно реализовать? Помогите решить проблему. Если возможно распишите для чайников.\nДля тех кто не понял, нужно чтобы после вывода сообщения кидало снова на simple.php, без параметра. А в случае перехода обратно происходила переадресация на страницу без параметра.","author":{"@type":"Person","name":"user_86604525","url":"https://otvet.mail.ru/profile/user_86604525"},"dateCreated":"2019-06-03T13:40:51+03:00","datePublished":"2019-06-03T13:40:51+03:00","answerCount":5,"upvoteCount":0,"acceptedAnswer":{"@type":"Answer","text":"Не передавай nologin в GET-параметре, а сохраняй в $_SESSION. А дельше:\nif (!empty($_SESSION['nologin']) {\necho твой_js_код;\nunset($_SESSION['nologin']);\n}\nПодробности: \nhttps://www.php.net/manual/ru/function.session-start.php","dateCreated":"2019-06-03T14:25:51+03:00","datePublished":"2019-06-03T14:25:51+03:00","upvoteCount":0,"author":{"@type":"Person","name":"andrei_6534","url":"https://otvet.mail.ru/profile/andrei_6534"},"url":""},"suggestedAnswer":[]}},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"WebPage","@id":"https://otvet.mail.ru/space/programming/","name":"Программирование"}},{"@type":"ListItem","position":2,"item":{"@type":"WebPage","name":"Как на PHP обрезать URL после обновления или возвращения на страницу?"}}]}]}
Ответы
Аватар пользователя
6лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Как на 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