За последние 24 часа нас посетили 70030 программистов и 5642 робота. Сейчас ищут 1315 программистов ...

Проверка юзера

Тема в разделе "PHP для новичков", создана пользователем Неугомонный, 10 авг 2023.

  1. Неугомонный

    Неугомонный Активный пользователь

    С нами с:
    10 фев 2018
    Сообщения:
    192
    Симпатии:
    3
    Ну всё почти собрал свой велосипед , осталось только проверку сделать юзера

    В первом варик прикольно 2 таблицу слито в одну очень удобно, но есть минуса нужно колонки все держать в разных именах
    Варик второй и третий с join и без

    Как правильнее всего ?
    PHP:
    1. // Варик 1
    2. if(isset($_COOKIE[COOKIE_PREFIX.'_']))
    3. {
    4.      $user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM `".PREFIX."_sessions` RIGHT JOIN `".PREFIX."_users` ON `".PREFIX."_sessions.user_id` = `".PREFIX."_users.user_id` WHERE `key` = '".escape($_COOKIE[COOKIE_PREFIX.'_'])."'"));
    5.      if(isset($user['user_id']))
    6.      {
    7.          if(!hash_equals($user['key'], crypt($_COOKIE[COOKIE_PREFIX.'_'], $user['key'])))
    8.              unset($user);
    9.      }
    10. }
    11. // Варик 2
    12. if(isset($_COOKIE[COOKIE_PREFIX.'_']))
    13.   {
    14.       $user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT `user_id` FROM `".PREFIX."_sessions` RIGHT JOIN `".PREFIX."_users` ON `".PREFIX."_sessions.user_id` = `".PREFIX."_users.user_id` WHERE `key` = '".escape($_COOKIE[COOKIE_PREFIX.'_'])."'"));
    15.       if(isset($user['user_id']))
    16.       {
    17.           $session = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM `".PREFIX."_sessions` WHERE `user_id` = '".$user['user_id']."'"));
    18.           if(!hash_equals($session['key'], crypt($_COOKIE[COOKIE_PREFIX.'_'], $session['key'])))
    19.               unset($user);
    20.       }
    21.   }
    22. // Варик 3
    23. if(isset($_COOKIE[COOKIE_PREFIX.'_key']) && isset($_COOKIE[COOKIE_PREFIX.'_user_id']))
    24.   {
    25.       $user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM `".PREFIX."_users` WHERE `user_id` = '".intval($_COOKIE[COOKIE_PREFIX.'_user_id'])."'"));
    26.       if(isset($user['user_id']))
    27.       {
    28.  
    29. $session = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM `".PREFIX."_sessions` WHERE `user_id` = '".$user['user_id']."'"))
    30.           if(!hash_equals($session['key'], crypt($_COOKIE[COOKIE_PREFIX.'_'], $session['key'])))
    31.               unset($user);
    32.       }
    33.   }
     
    #1 Неугомонный, 10 авг 2023
    Последнее редактирование: 10 авг 2023
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    самый хороший варик - адекватно вопросы задавать.
    ... вообще не очень понятно что и зачем вы делаете...
    если нужна авторизация по кукам .. и в качестве идентификатора задаете имя сессии.. то вообще достаточно доп поле session в таблице пользователей иметь без всяких сложностей
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.840
    Симпатии:
    1.338
    Адрес:
    Лень
    1. Убогий вид кодинга.
    2. Процедурный стиль - Бабушка закормила внучёнка щщами.
    3. Многократное использование глобальных переменных напрямую, а не через ООП Lib Request/Responce.
    4. Конструкция isset умеет принимать N аргументы сразу.
    5. 2 Вариат - убийца логики. Выводим из таблицы юзерИд чтобы потом найти по юзерИд тот же юзерИд но с трусами.
    https://github.com/symfony/symfony
    Зубрить, особенно его компоненты.
     
  4. don.bidon

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

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    Сколько лет потребуется ТС-у, чтобы осилить, книгов надо тут хотя бы одну.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.840
    Симпатии:
    1.338
    Адрес:
    Лень
    1. composer
    2. github
    3. php namespace
    4. OOP
    5. Facade