С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
2 / 2 / 2
Регистрация: 20.10.2016
Сообщений: 92

Редирект после авторизации

20.10.2016, 20:42. Показов 1658. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Я новичок в этом деле и хочу разобраться, почему после авторизации страница с входом остается. Для представления, у меня есть несколько .php-файлов, содержимое которых следующее:
1) index.php - основная страница. Из php в ней:
PHP
1
2
3
4
<?php
session_start();
require 'auth.php'; 
?>
2) auth.php :
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
session_start();
if(!isset($_SESSION['loggedIn'])){
    header("Location: enter.php");
    exit;
}
if($_GET['do'] == 'logout'){
unset($_SESSION['loggedIn']);
session_destroy();
}
?>
3) enter.php - страница собственно самой авторизации. ее php :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
session_start();
?>
...
<?php 
include 'dbconnect.php';
if(isset($_SESSION['loggedIn'])){
    header("Location: index.php");
    exit;}
if(isset($_POST['submit'])){
     if(empty($_POST['login']) or empty($_POST['password'])){
             $info_input = 'Для входа введите логин и пароль';
     }elseif(!preg_match("/[-a-zA-Z0-9]{3,15}/", $_POST['login'])){
             $info_input = 'Вы неправильно ввели логин';
     }elseif(!preg_match("/[-a-zA-Z0-9]{3,30}/", $_POST['password1'])){ 
    $info_input = 'Вы неправильно ввели пароль';
     }else{
$login = $_POST['login'];
$password = md5($_POST['password1']);
mysql_connect("localhost", "root");
$query = mysql_query("SELECT id FROM users.users WHERE login='$login' AND password='$password'");
$id_user = mysql_fetch_array($query);
$row  = mysql_num_rows($query);
if ($row == 0){
    exit ("Извините, введённый логин или пароль неверный.");
}
elseif($row == 1)
{SESSION_START($_SESSION["loggedIn"] = $id_user[id]);
    header('Location: index.php');
    exit;}}}
?>
4) dbconnect.php 
<?php
$db = mysql_connect ("localhost", "root");
mysql_select_db ("users",$db);
?>
теперь сам вопрос, или даже просьба. Подскажите, пожалуйста, что не так? Желательно все. Спасибо большое заранее. Да, кстати, в интернете искал много...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2016, 20:42
Ответы с готовыми решениями:

Редирект после авторизации
Всем добрый вечер. Собственно нужен совет знающих. У меня есть подобие сайта, с авторизацией\регистрацией, мне нужно теперь сделать так,...

Редирект при авторизации
Здравствуйте. Столкнулся с такой проблемой: при авторизации у себя на сайте на локальном сервере (openserver) через вк, я получаю: ...

Редирект при авторизации
Вот сам код, где написать редирект? &lt;?php session_start(); require ('connect.php'); if (isset($_POST) and...

6
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958
20.10.2016, 23:11
лично мне сразу бросилось вот это
PHP
1
SESSION_START($_SESSION["loggedIn"] = $id_user[id])
Вы уверены что данная сессия вообще создается, видимо нет если условие
PHP
1
if(!isset($_SESSION['loggedIn']))
срабатывает.
Напишите лучше
PHP
1
2
3
4
elseif($row == 1)
{$_SESSION["loggedIn"] = $id_user[id];
    header('Location: index.php');
    exit;}}}
0
2 / 2 / 2
Регистрация: 20.10.2016
Сообщений: 92
21.10.2016, 05:33  [ТС]
не работает(( все равно остается на странице авторизации почему-то
0
94 / 94 / 68
Регистрация: 26.03.2015
Сообщений: 248
21.10.2016, 06:21
Согласно документации
функцию header() можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML тэгов, пустых строк и т.п.
Это значит, что вне тегов <?php и ?> до вызова функции header() не должно быть никаких символов, включая пробелы и переносы строки. Возможно, проблема в этом, потому что у вас такие символы есть в файле enter.php в 4-ой строке. Попробуйте это исправить.
0
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958
21.10.2016, 17:56
ns16, header согласно описанию проблемы работает. Проблема стоит в том что $_SESSION['loggedIn'] нет т.к. после авторизации и редиректа срабатывает вот этот блок
PHP
1
2
3
4
if(!isset($_SESSION['loggedIn'])){
    header("Location: enter.php");
    exit;
}
elochka, я еще раз повторюсь - проверьте вот на этой странице, что говорит
PHP
1
2
3
4
if(isset($_SESSION['loggedIn'])){
    echo $_SESSION['loggedIn'];
}
else 'нет такого';
и вот если нет такого то смотрите почему она не создалась. Ищите ошибку пошагово.
1
2 / 2 / 2
Регистрация: 20.10.2016
Сообщений: 92
21.10.2016, 20:00  [ТС]
Спасибо, я посмотрю)

Добавлено через 5 минут
странно, но он не выводит вообще ничего
0
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958
21.10.2016, 22:17
Цитата Сообщение от elochka Посмотреть сообщение
но он не выводит вообще ничего
ой сорян, если скопировала так как написал то ясный красный. там команды ехо нету. нужно -
PHP
1
2
3
4
if(isset($_SESSION['loggedIn'])){
    echo $_SESSION['loggedIn'];
}
else echo 'нет такого';
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2016, 22:17
Помогаю со студенческими работами здесь

После авторизации повторно перекидывает обратно на страницу авторизации
Так, у меня есть проблема. Как только авторизируюсь, перекидывает обратно на авторизацию. Вот код, login.php: &lt;? ...

Не получается редирект после авторизации пользователя
у меня на сайте после авторизации выбрасывает на страницу профиля пользователя, а надо на другую на другую... Где можно прописать редирект?...

Как сделать редирект на страницу после авторизации успешной?
Вопрос простой до безумия, тем более учитывая то, что у меня после авторизации уже выскакивает сообщение &quot;Успешно авторизованы&quot; ...

Не работает редирект после "ручной" авторизации
Всем привет. Сделал &quot;кастомную&quot; авторизацию, по документации ларавеля (версия 5.4) public function authenticate(Request $request)...

Редирект на страницу авторизации
всем доброго времени суток. есть web-приложение на стеке MEAN. возникла необходимость ограничить доступ к странице для не авторизованного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru