PHP. Как сделать переход на главную страницу со страницы входа, при правильном вводе логина и пароля? [дубликат]
Сейчас выполняется проверка, через echo() при правильном вводе логина и пароля появляется ссылка на главную. Как через PHP автоматом при правильном вводе логина и пароля, перенаправлять на главную?
Отслеживать
задан 6 июн 2020 в 15:59
31 6 6 бронзовых знаков
Вы хоть код прикрепите.
6 июн 2020 в 16:01
Прикрепил код php
6 июн 2020 в 16:05
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
header(‘Location: ссылка на главную’)
Отслеживать
ответ дан 6 июн 2020 в 16:03
HTMLProgrammer HTMLProgrammer
1,096 6 6 серебряных знаков 12 12 бронзовых знаков
Вставлять после проверки?
6 июн 2020 в 16:03
да, нужно относительный путь к главной
6 июн 2020 в 16:11
Как понять «относительный путь»? Можешь написать маленький код?
6 июн 2020 в 16:13
относительный никогда не надо писать
6 июн 2020 в 16:57
header(‘Location: /main.php’)
6 июн 2020 в 17:12
-
Важное на Мете
Связанные
Похожие
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как после авторизации автоматически перенаправляться на другую страницу?
verdex: Warning: Cannot modify header information — headers already sent by. Ругается на строку header (location).

t_timaa: надеюсь, сайт не «боевой»? Хранить пароли в открытом виде – зашквар. Использовать mysql_ – зашквар.

ПОМОГИТЕ!! Как сделать чтоб после входа перекидывало на новую страницу для авторизованного пользователя c id в ссылке и т.д ?
Вот я выделил код и показал как выглядит, перешли на страницу входа вели данные и даже страница не обновилась показаться мой профиль и выйти там видно а как бы сделать чтоб после входа перекидывало на другую страницу для авторизованного пользователя (чтоб id с быза даных брал и в URL вставлял как своя личная страница получилась и если указать в браузере эту ссылку с айти в юрл то показывался профиль) сразу же нажал войти и перекинуло на другую стр, что впихнуть туда надо чтоб все работало так ?и если можно пример наглядный что куда вставлять нужно или поменять.
Вложения

19,2 КБ Просмотры: 239

9,4 КБ Просмотры: 257

6,2 КБ Просмотры: 183
BaNru
Пацифизжу
Команда форума
Регистрация 13.11.2010 Сообщения 4 117
Как брать ID из вашей «база даных» не скажу, потому что не знаю какая она.
А редирект делается в условие else через header
. else< header('Location: /file.php?id=' . ID_FROM_DB); >
При этом надо учесть, что редирект должен быть в ДРУГОЙ ФАЙЛ, иначе зациклится.
И в общем алгоритм построен неверно. В данном случае не должно быть привязки по ID. Этот ID должен сам обрабатываться согласно куки авторизации в вашем файле file.php и не отображаться в URL.
nikt0
Member
Регистрация 13.02.2020 Сообщения 14
Как брать ID из вашей «база даных» не скажу, потому что не знаю какая она.
А редирект делается в условие else через header
. else< header('Location: /file.php?id=' . ID_FROM_DB); >
При этом надо учесть, что редирект должен быть в ДРУГОЙ ФАЙЛ, иначе зациклится.
И в общем алгоритм построен неверно. В данном случае не должно быть привязки по ID. Этот ID должен сам обрабатываться согласно куки авторизации в вашем файле file.php и не отображаться в URL.
вот бд как теперь брать ID из «базы данных»??
Вложения

41,8 КБ Просмотры: 103
BaNru
Пацифизжу
Команда форума
Регистрация 13.11.2010 Сообщения 4 117
Смотрю вы по каким-то урокам изучаете. Там разве нет?
В интернете же полно учебников и статей с такими начального уровня уроками.
PHP: mysqli::query — Manual
$name = $_GET["username"]; $name = htmlspecialchars($name); // Добавим хоть какую-то защиту $mysqli = new mysqli("localhost", "my_user", "my_password", "lesson"); // подключаемся к DB, если этого не делали $result = mysqli_query("SELECT user_id FROM signup WHERE username='$name' limit 1"); $value = mysqli_fetch_object($result); echo $value->user_id;
(В коде могут быть ошибки, не проверял)
nikt0
Member
Регистрация 13.02.2020 Сообщения 14
Смотрю вы по каким-то урокам изучаете. Там разве нет?
В интернете же полно учебников и статей с такими начального уровня уроками.
PHP: mysqli::query — Manual
$name = $_GET["username"]; $name = htmlspecialchars($name); // Добавим хоть какую-то защиту $mysqli = new mysqli("localhost", "my_user", "my_password", "lesson"); // подключаемся к DB, если этого не делали $result = mysqli_query("SELECT user_id FROM signup WHERE username='$name' limit 1"); $value = mysqli_fetch_object($result); echo $value->user_id;
(В коде могут быть ошибки, не проверял)
так как сделать чтоб просто перекидывало на другую страницу для авторизованного пользователя ?
«else header(‘Location: /file.php?id=’ . ID_FROM_DB);
>»
это чет не работает 3-2 фото , а через мету он просто обновляется бесконечно и не перекидывает
Вложения

33,7 КБ Просмотры: 62

10,9 КБ Просмотры: 63

33,8 КБ Просмотры: 58
BaNru
Пацифизжу
Команда форума
Регистрация 13.11.2010 Сообщения 4 117
Вам показывает ошибку, что перед header не должно быть никакого отображаемого кода. То есть всё что выше if надо засунуть в этот самый if.
Или правильнее сделать наоборот сначала проверку с редиректом в самом начале документа
if(isset($_COOKIE['username'])) < header('Location: /file.php?id=' . ID_FROM_DB); exit; // надо чтобы принудительно остановить выполнение кода и не писать else >//далее уже ваш код .
Проблема с метой аналогичная. Она должна быть в хедере (head) по феншую. И возможно надо указать со слешем «/profile.php»
PS Пожалуйста, не плодите одинаковые темы и не пишите КАПСом.
nikt0
Member
Регистрация 13.02.2020 Сообщения 14
Вам показывает ошибку, что перед header не должно быть никакого отображаемого кода. То есть всё что выше if надо засунуть в этот самый if.
Или правильнее сделать наоборот сначала проверку с редиректом в самом начале документа
if(isset($_COOKIE['username'])) < header('Location: /file.php?id=' . ID_FROM_DB); exit; // надо чтобы принудительно остановить выполнение кода и не писать else >//далее уже ваш код .
Проблема с метой аналогичная. Она должна быть в хедере (head) по феншую. И возможно надо указать со слешем «/profile.php»
PS Пожалуйста, не плодите одинаковые темы и не пишите КАПСом.
ну если будите помогать то не буду флудить ))
nikt0
Member
Регистрация 13.02.2020 Сообщения 14
Вам показывает ошибку, что перед header не должно быть никакого отображаемого кода. То есть всё что выше if надо засунуть в этот самый if.
Или правильнее сделать наоборот сначала проверку с редиректом в самом начале документа
if(isset($_COOKIE['username'])) < header('Location: /file.php?id=' . ID_FROM_DB); exit; // надо чтобы принудительно остановить выполнение кода и не писать else >//далее уже ваш код .
Проблема с метой аналогичная. Она должна быть в хедере (head) по феншую. И возможно надо указать со слешем «/profile.php»
PS Пожалуйста, не плодите одинаковые темы и не пишите КАПСом.
кароче чет вообще не робит я сделал как надо не кидает на стр profil.php
Вложения

60 КБ Просмотры: 51

13,1 КБ Просмотры: 55
BaNru
Пацифизжу
Команда форума
Регистрация 13.11.2010 Сообщения 4 117
в САМОЕ начало.
Я же специально написал
//далее уже ваш код
Специально привёл самый первый тег документа.
Дальше вместо ID_FROM_DB надо вставить ПЕРЕМЕННУЮ с ID полученную из базы. Как её получить писал в #4 сообщение этой темы.
nikt0
Member
Регистрация 13.02.2020 Сообщения 14
в САМОЕ начало.
Я же специально написал
//далее уже ваш код
Специально привёл самый первый тег документа.
Дальше вместо ID_FROM_DB надо вставить ПЕРЕМЕННУЮ с ID полученную из базы. Как её получить писал в #4 сообщение этой темы.
хоть в самом начало хоть там где щас стоит все равно это пусто
и айди он же сам должен брать тот на который пользователь зарегистрировался
и куда это вставлять $name = $_GET[«username»];
$name = htmlspecialchars($name); // Добавим хоть какую-то защиту
$result = mysqli_query(«SELECT user_id FROM signup WHERE username=’$name’ limit 1»);
$value = mysqli_fetch_object($result);
echo $value->user_id; так что поставил в самое начало все равно пусто где самый первый иф
Последнее редактирование: 15.02.2020
BaNru
Пацифизжу
Команда форума
Регистрация 13.11.2010 Сообщения 4 117
Вы хотите научиться или получить решение?
Если вы хотите учится, то подсказываю вам один лайфхак
В САМОМ начале файлов размещать вот такой код
Этот код будет выводить на экран ВСЕ PHP ошибки.
Со временем вы научитесь их сразу понимать, а до тех пор их можно загуглить или тут спросить.
Разумеется в будущем, когда вы будете выкладывать проект для всеобщего пользования, вывод ошибок надо наоборот запретить или выводить в файл. Но это уже другая история, которую вы узнаете позже.
Вы начали изучение немного не от туда. Изучение взаимодействия с БД надо начинать вторым этапом. Вы не научились даже элементарному синтаксису PHP. Поэтому вас сложно понять многое. Если уж начали, то уроков по написанию АВТОРИЗАЦИИ много, рекомендую парочку прочитать для начала.
хоть в самом начало хоть там где щас стоит все равно это пусто
Значит что-то не так делаете.
и айди он же сам должен брать тот на который пользователь зарегистрировался
Кто он? У вас код берёт ID из БД. Чтобы писать программу надо продумать сначала алгоритм действий, что за чем идёт. Без этого у вас ничего не получится.
Я вам напишу код (примерный), но от этого вы ничего не научитесь, вы даже не понимаете, как ID из базы привязать к переменной.
else < // Или привязываем из GET $name = $_GET["username"]; >$name = htmlspecialchars($name); // Добавим хоть какую-то защиту $mysqli = new mysqli("localhost", "my_user", "my_password", "lesson"); // подключаемся к DB, если этого не делали $result = mysqli_query("SELECT user_id FROM signup WHERE username='$name' limit 1"); // Ищем в БД $value = mysqli_fetch_object($result); // Фильтруем полученные данные, чтобы PHP понимал /* Тут надо бы ещё пароль проверить, но это уже другая история */ $id = $value->user_id; // заносим в переменную if( !empty($id) ) < // проверяем не пустая ли переменная, вдруг ID не нашёлся /* тут надо бы сохранить куку, но это тоже другая история */ header('Location: /profile.php?id=' . $id); // делаем желаемый редирект exit; // надо чтобы принудительно остановить выполнение кода и не писать else >// дальше пойдёт код, если ID не найден > //далее уже ваш код вывода формы авторизации ?> .
Последнее редактирование: 15.02.2020
nikt0
Member
Регистрация 13.02.2020 Сообщения 14
Вы хотите научиться или получить решение?
Если вы хотите учится, то подсказываю вам один лайфхак
В САМОМ начале файлов размещать вот такой код
Этот код будет выводить на экран ВСЕ PHP ошибки.
Со временем вы научитесь их сразу понимать, а до тех пор их можно загуглить или тут спросить.
Разумеется в будущем, когда вы будете выкладывать проект для всеобщего пользования, вывод ошибок надо наоборот запретить или выводить в файл. Но это уже другая история, которую вы узнаете позже.
Вы начали изучение немного не от туда. Изучение взаимодействия с БД надо начинать вторым этапом. Вы не научились даже элементарному синтаксису PHP. Поэтому вас сложно понять многое. Если уж начали, то уроков по написанию АВТОРИЗАЦИИ много, рекомендую парочку прочитать для начала.
Значит что-то не так делаете.
Кто он? У вас код берёт ID из БД. Чтобы писать программу надо продумать сначала алгоритм действий, что за чем идёт. Без этого у вас ничего не получится.
Я вам напишу код (примерный), но от этого вы ничего не научитесь, вы даже не понимаете, как ID из базы привязать к переменной.
else < // Или привязываем из GET $name = $_GET["username"]; >$name = htmlspecialchars($name); // Добавим хоть какую-то защиту $mysqli = new mysqli("localhost", "my_user", "my_password", "lesson"); // подключаемся к DB, если этого не делали $result = mysqli_query("SELECT user_id FROM signup WHERE username='$name' limit 1"); // Ищем в БД $value = mysqli_fetch_object($result); // Фильтруем полученные данные, чтобы PHP понимал /* Тут надо бы ещё пароль проверить, но это уже другая история */ $id = $value->user_id; // заносим в переменную if( !empty($id) ) < // проверяем не пустая ли переменная, вдруг ID не нашёлся /* тут надо бы сохранить куку, но это тоже другая история */ header('Location: /profile.php?id=' . $id); // делаем желаемый редирект exit; // надо чтобы принудительно остановить выполнение кода и не писать else >// дальше пойдёт код, если ID не найден > //далее уже ваш код вывода формы авторизации ?> .
@@@@@вот это@@@@@else < // Или привязываем из GET $name = $_GET["username"]; >$name = htmlspecialchars($name); // Добавим хоть какую-то защиту @@@@обязательно . @@@@ @и $result = mysqli_query("SELECT user_id FROM signup WHERE username='$name' limit 1"); // Ищем в БД $value = mysqli_fetch_object($result); // Фильтруем полученные данные, чтобы PHP понимал /* Тут надо бы ещё пароль проверить, но это уже другая история */ $id = $value->user_id; // заносим в переменную if( !empty($id) ) < // проверяем не пустая ли переменная, вдруг ID не нашёлся /* тут надо бы сохранить куку, но это тоже другая история */ header('Location: /profile.php?id=' . $id); // делаем желаемый редирект exit; // надо чтобы принудительно остановить выполнение кода и не писать else >// дальше пойдёт код, если ID не найден > //далее уже ваш код вывода формы авторизации это в САМОЕ начало ПХП . вот так как на фото Просто может авторизация в if а когда уже пользователь авторизован это else(иначе) и туда может вставить переход и в переходе из бд ади берет и кидает в свой профиль на новую стр со своим ади в стоке ?? @@@@@кароче вот код как правильно покажите я уже закалибался @@@@ else < echo 'Неверные данные - Логин/Пароль.'; >> else < echo 'Неверные данные'; >> > ?> CentPublic.ru 



