За последние 24 часа нас посетили 20575 программистов и 1125 роботов. Сейчас ищет 601 программист ...

Аутентификация пользователей

Тема в разделе "PHP для новичков", создана пользователем Reken, 12 авг 2021.

Метки:
  1. Reken

    Reken Активный пользователь

    С нами с:
    4 июл 2019
    Сообщения:
    198
    Симпатии:
    5
    Подскажите пожалуйста, чем плох следующий способ аутентификации пользователей:
    Пользователь через форму ввода отправляет логин и пароль (POST) в скрипт аутентификации. Скрипт через POST получает логин и пароль (пароль в md5). Выполняет сравнение логина и пароля с БД (mysql), если совпадение есть, то записывает логин в сессию и перенаправляет пользователя в личный кабинет, если совпадений нет отправляет пользователя обратно на страницу ввода логина и пароля...

    Защита странички личного кабинета, выглядит так:
    Код (Text):
    1. session_start();
    2. $login = $_SESSION['login'];
    3.  
    4. if ($login == true){
    5.  
    6. #Код личного кабинета
    7.  
    8. }else{
    9.         exit("<p><strong>Ошибка!</strong>Вы не можете просматривать страницы портала без аутентификации!.</p>");
    10.     }
    11.    
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Если у вас пользователь один или все пользователи имеют равные права, то ничем не плох.
    Если же это для просмотра или правки какой-то личной информации в многопользовательской системе, то нужно еще сравнивать ID.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    Это авторизация, а не аутентификация.

    Если по канонам, то надо ещё выставить статус 403.

    Пользователю будет понятней если написать "у вас нет права на эту страницу" или "войдите чтобы увидеть эту страницу".
    ИЛИ сразу редиректить на страницу аутентификации, сохраняя адрес текущей страницы где-то (в сессии/в get-параметре) чтобы вернуться на неё.
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Дьявол в деталях:
    PHP:
    1. $login = $_SESSION['login'];
    Обычно при использовании сессий основную авторизационную проверку делают так:
    PHP:
    1. if (isset($_SESSION['login'])) {
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    musicman3 нравится это.
  6. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    845
    Симпатии:
    130
    Ну, соль никто не отменял, но да, последняя пара ф-ций вкуснее.
     
  7. musicman3

    musicman3 Активный пользователь

    С нами с:
    30 июн 2019
    Сообщения:
    144
    Симпатии:
    12
    Адрес:
    Дыра на карте
    Полностью поддерживаю. Именно так и нужно. Это самый надежный на данный момент метод.