За последние 24 часа нас посетили 17922 программиста и 1700 роботов. Сейчас ищут 1602 программиста ...

Авторизация PHP и БД

Тема в разделе "PHP и базы данных", создана пользователем vinment, 3 мар 2006.

  1. vinment

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

    С нами с:
    3 мар 2006
    Сообщения:
    1
    Симпатии:
    0
    Добрый день господа !!!!
    Суть басни и проблемы такова:
    При входе на страницу используется окно авторизации, далее переход на страницу с множеством фреймов.
    Посоветуйте как реализовать поддержку результата авторизации в каждом фрейме.
    Тобиш, чтобы потом не обращаться каждый раз в базу на проверку подлиности юзера из каждого фрейма.
    при входе в базе апдейт на статус 1, при выходе на 0.
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    1. фреймы - зло
    2. авторизация хранится в сессии.
     
  3. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Код (Text):
    1. // АВТОРИЗАЦИЯ
    2. $login = $_POST[login];
    3. $password = ($_POST[password]);
    4. if ( isset($idp) and isset($login) and isset($password) )
    5.  {
    6.   $dbconnect = @mysql_connect("$dbhost", "$dblogin", "$dbpassword");           // начало сеанса с базой данных
    7.   $use = @mysql_select_db($dbname, $dbconnect);                                // выбор базы данных
    8.   $result = @mysql_query("select * from users where login = '$login'");        // запрос в БД
    9.   $resultarray = @mysql_fetch_array($result);                                  // перевод результата в массив
    10.   $dbclose = @mysql_close($dbconnect);                                         // закрытие сеанса с БД
    11.   $md5pas = @md5("$password");
    12.  }
    13.  
    14. if ( $md5pas == $resultarray["password"] and $dbconnect and  isset($login) and isset($password) and $resultarray["access"] == "yes"  )
    15.  {
    16.   $permissions = $resultarray[permissions];
    17.   $login = $resultarray[login];
    18.   $email = $resultarray[email];
    19.   $icq = $resultarray[icq];
    20.   $url = $resultarray[url];
    21.   $name = $resultarray[name];
    22.   $family = $resultarray[family];
    23.   $patronymic = $resultarray[patronymic];
    24.   $sex = $resultarray[sex];
    25.   $day = $resultarray[day];
    26.   $month = $resultarray[month];
    27.   $year = $resultarray[year];
    28.   $country = $resultarray[country];
    29.   $region = $resultarray[region];
    30.   $city = $resultarray[city];
    31.   $street = $resultarray[street];
    32.   $phone = $resultarray[phone];
    33.   $mobilphone = $resultarray[mobilphone];
    34.   $profession = $resultarray[profession];
    35.   $about = $resultarray[about];
    36.   $regdate = $resultarray[regdate];
    37.   $regtime = $resultarray[regtime];
    38.   $access = $resultarray[access];
    39.  
    40.   @session_register("permissions", "login", "email","icq", "url", "name", "family", "patronymic", "sex", "day", "month", "year", "country", "region", "city", "street", "phone", "mobilphone", "profession", "about", "regdate", "regtime", "access");
    41.  }
    42. // авторизация закончена
    пример авторизации из моего старого скриптика ... примитив конечно, но работало на ура...
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Hight
    1.ты поставь себе error_reporting(E_ALL) и будешь приятно удивлен ...
    2. так и норовит в login впихнуть ' or '1=1
    3.ошибки надо не подавлять @, а обрабатывать
     
  5. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    440hz
    Не придирайся к этому коду... Я его тут для примера привёл как раз потому-что он старый и неактуальный... Но при этом вполне наглядный...

    Новенькие коды строго секретны )))
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Hight
    1. секретничать будем в другом месте. как правило секреты состоят из кривого и дырявого кода который автор боится показать, а только пыжится.
    2. даже для примера приводи РАБОТАЮЩИЕ и ПРОВЕРЕНЫЕ КОДЫ с пониманием того что они делают. в даном случае это не так.
     
  7. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    440hz
    Это код полность рабочий и проверенный... Единственный недостаток, это то, что он очень старый... А насчёт секретничать - не каждый будет так просто выдавать свои ноу хау...
    Человеку нажна была авторизация, я ему привел пример... Пусть разберётся, модифицирует, улучшит... Если будет непонятно, пусть спросит, подскажем ведь... Практика ещё никому не приносила вреда )
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    дай-ка ссылочку где он используется? 8)))
     
  9. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    :D К сожалению не могу... Я писал это для одной организации за символическую плату (интернет-траффик)... Это был небольшой движочек для сайта с админкой, гостевой, новостями и крутилось всё это внутри сети... И кажется до сих пор крутится... По-этому извиняй...
     
  10. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Hight
    ну в общем понятно ...
     
  11. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    И ничего не будет... Просто не авторизуешься и всё...
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Hight
    уверен? я получу авторизацию первого юзера который мне отдаст запрос. в 99% это админ. но это не важно. главное я пройду авторизацию.
     
  13. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    440hz
    Подожди... Ты хочешь сказать, что если в поле ввода логина ты введёшь - ' or '1=1
    то ты каким-то образом сможешь пройти авторизацию... Не верю...

    Специально сейчас посидел, подумал над запросом в БД... Поднял старые коды, установил (install.php есть) и попробовал, и нифига не получилось... Как я и предполагал...

    select * from users where login = '' or '1=1 '; - запрос правильный получается... Но он нифига в данном случае не даёт...
    Авторизация ведь идёт путём сравнения ХЕШ-кодов из возврашённой строки таблицы... Если хеши не совпали, то и авторизацию ты не получишь...
     
  14. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Hight
    таки да. проверка пароля идет не в запросе. может и прокатит.