За последние 24 часа нас посетил 16321 программист и 1583 робота. Сейчас ищут 1535 программистов ...

Авторизация на сайте

Тема в разделе "PHP для новичков", создана пользователем KGB, 5 дек 2015.

  1. KGB

    KGB Новичок

    С нами с:
    12 ноя 2015
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте. Скажите, будет ли правильно и безопасно, использовать данный код для авторизации на сайте?

    Код (PHP):
    1. if (!isset($_POST['email'])) {
    2.     // Показываем форму входа
    3. } else {
    4.     $email = trim($_POST['email']);
    5.     $pass = trim($_POST['password']);
    6.  
    7.     if (!empty($pass) && !empty($email)) {
    8.         $res = login($email, $pass);
    9.  
    10.         if ($res === 'OK') {
    11.             // Все верно, что то делаем
    12.         } else {
    13.             // Ошибка
    14.         }
    15.     } else {
    16.         // Ошибка
    17.     }
    18. }
    19.  
    20. function login($email, $pass) {
    21.     $email = mysql_real_escape_string($email);
    22.     $pass = mysql_real_escape_string($pass);
    23.  
    24.     $user = mysql_query("SELECT * FROM users WHERE email='$email'");
    25.  
    26.     /*
    27.         ....
    28.     */
    29.  
    30.     if (count($user) > 0) {
    31.         if ($user['pass'] === $pass) {
    32.             //Сессия
    33.  
    34.             return 'OK';
    35.         } else {
    36.             return 'Неправильный пароль!';
    37.         }
    38.     } else {
    39.         return 'Пользователь с таким Email не найден!';
    40.     }
    41. }
    42.  
    Или же, есть лучшее решение?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    нет.

    во-первых, вы путаетесь в терминологии. как следствие, вы не понимаете как именно надо реагировать на успех/неудачу аутентификации.

    во-вторых, что-то с паролем вы делаете непонятное. пароль нельзя хранить в исходном виде.

    в-третьих, не надо говорить "такой емайл не найден" — незачем давать кому-то инструмент для проверки присутствия человека (его емайла) на сервисе. надо сообщать общий результат: "неверный емайл или пароль".


    в-сотых, count($user) эмм... а что у тебя в этой переменной?
     
  3. KGB

    KGB Новичок

    С нами с:
    12 ноя 2015
    Сообщения:
    5
    Симпатии:
    0
    По поводу второго:
    про открытый вид я знаю, просто написал для примера.

    По поводу третьего:
    спасибо, учту.
    А при регистрации сообщать, что такой email присутствует - нормально?

    По поводу первого:
    а как правильно реагировать?
     
  4. artoodetoo

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

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

    сценарий аутентификации:

    пользователь уже идентифицирован?

    если да — перенаправить его куда он просился или на главную. конец.

    иначе, если это POST запрос и необходимые поля получены, попробуем проверить введенные данные

        если данные верны, запомнить состояние пользователя (ты это назвал "сессия") и перенаправить его на этот же адрес. конец.

        если данные не верны, вывести об этом сообщение

    вывести форму входа. конец.
     
  5. KGB

    KGB Новичок

    С нами с:
    12 ноя 2015
    Сообщения:
    5
    Симпатии:
    0
    Может я что то не понимаю!? Вроде сделал все так же (корме проверки - идентифицирован пользователь или нет)?
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    ну значит ты почти молодец.