right4   right2
Караганда-НМ.KZ
Форум Регистрация Фотоальбомы 3D тур Правила Календарь Все форумы прочитаны
left1 left2

Вернуться   Караганда-НМ.KZ > Информационные технологии > Программирование

Важная информация

KNM
Ответ
 
Опции темы
Старый 13.06.2008, 19:15   #1
Gedeon
Любящий почти всех!
Аватар для Gedeon
Мальчик 4993 Возраст: 41
Flag 4993
Город: Караганда
Gedeon там
 
Регистрация: 26.06.2007
Сообщений: 6,037
Репутация: 6082798
Вес репутации: 60844
PHP & MySQL Сопоставление логина и пароля

Ребята! Я всё ещё иду к заветной цели!
Но очередное препятствие. Я принимаю от зарегистрированного пользователя логин и пароль.
Как грамотно провести его опознание? С сопоставлением его логину именно его пароля. Логин и пароль хранятся в MySQL в одной таблице.
Т.е. я не знаю как из всей таблицы выделить строку которая содержит логин пользователя и проверить пароль только в этой строке. А не во всей таблице.
Может быть эта проблема решается более эффективно. Но пока я тока так вижу. Как быть? Подскажите пожалуйста!
__________________
Наша жизнь не принадлежит нам.
 
Ответить с цитированием
Сегодня
Местный
Реклама

__________________

...
Старый 13.06.2008, 20:29   #2
keeper
Местный
Мальчик 6522
Flag 6522
Город: Караганда
keeper там
 
Регистрация: 10.03.2008
Сообщений: 1,398
Репутация: 141138
Вес репутации: 1422
я только не давно начал изучать пхп по видео уроку Евгения Попова.
А нельзя просто сделать выборку по логину
$result =mysql_query (select pass form baza where login='логин');
$myrow = mysql_ftech_array ($result);
$pass = $myrow['pass'];

не судите строго ))

Добавлено через 4 минуты 7 секунд:
Могу записать два его видео учебника. За парочку пива ))
можете скачать, в инете есть.
__________________
Любо, братцы, любо...
 
Ответить с цитированием
Старый 13.06.2008, 21:47   #3
НечистЪ
Заблокирован
Мальчик 33
НечистЪ там
 
Регистрация: 16.04.2003
Сообщений: 3,174
Репутация: 496
Вес репутации: 0
очень просто... с минимальной защитой

Код:
$user = (isset($_REQUEST['user']) && !empty(isset($_REQUEST['user']))) ? $_REQUEST['user'] : Null;
$pass = (isset($_REQUEST['pass']) && !empty(isset($_REQUEST['pass']))) ? $_REQUEST['pass'] : Null;

$isLogged = False;

if (!is_null($user) && !is_null($pass)){
    $query = 'SELECT * FROM user_table WHERE login=\''.$user.'\' AND passwd=\''.$pass.'\'';
    $result =mysql_query($query);
    
    if ($row = mysql_fetch_array($result)) {
        $isLogged = True;
    }
}

if ($isLogged){
    echo 'Welcome!';
} else {
    echo 'Access denied!';
}
Добавлено через 10 минут 43 секунды:
для повышения защиты... надо как минимум:

а) проверять входящие данные с пользовательской стороны: $_REQUEST['user'] и $_REQUEST['pass'] на отсутсвие потенциально опасных символов...

б) использовать квотирование при запросах к БД...

в) использовать md5 при записи/чтении паролей...

Добавлено через 6 минут 42 секунды:
http://phpclub.ru

* на заметку
 
Ответить с цитированием
Старый 14.06.2008, 10:35   #4
Gedeon
Любящий почти всех!
Аватар для Gedeon
Мальчик 4993 Возраст: 41
Flag 4993
Город: Караганда
Gedeon там
 
Регистрация: 26.06.2007
Сообщений: 6,037
Репутация: 6082798
Вес репутации: 60844
I_KiLL_My_PC,
Спасибо. Но что-то здесь не так. По-моему, если пойти по такому принципу, то зайти может любой, кто укажет имеющийся в базе логин и пароль, даже если они друг другу не соответствуют. Т.е. регистрируешься, набираешь логин не свой, а пароль свой. И система тебя пропустит. Смешно будет. Вот эту проблему-то я и пытаюсь решить!

НечистЪ, Вот спасибо
Вот эта строчка у меня никак не получалась: $query = 'SELECT * FROM user_table WHERE login=\''.$user.'\' AND passwd=\''.$pass.'\''; Действительно! Надо же просто использовать AND!

А всё три защиты, которые ты советуешь делать я уже написал по книжкам. Чем и горжусь безмерно! Только md5 для пароля пока не использую. Но добавлю.

НечистЪ, а можно еще вопрос по теории?
Имеет ли смысл вручную обрезать полученные из формы данные по максимально допустимому количеству символов, когда максимальное количество символов и без того указано в MySQL таблице в свойствах столбика куда эти данные записываются?

А и ещё можно? Имеет ли смысл проверять вводимый пароль на допустимые символы?

Добавлено через 21 минуту 49 секунд:
Ввиду того, что в ответе ты написал что проврять пароль надо поясню последний вопрос:
Я имел ввиду какой смысл проверять пароль на допустимые символы, когда он нигде не выводится, а тихо и мирно лежит в базе? Может быть достаточно простой замены htmlspecialchars () А?
__________________
Наша жизнь не принадлежит нам.
 
Ответить с цитированием
Старый 14.06.2008, 13:35   #5
Gedeon
Любящий почти всех!
Аватар для Gedeon
Мальчик 4993 Возраст: 41
Flag 4993
Город: Караганда
Gedeon там
 
Регистрация: 26.06.2007
Сообщений: 6,037
Репутация: 6082798
Вес репутации: 60844
Применил! Всё работает!
Мне кажется ощущение программиста, когда прога начинает работать сродни ощущению бухгалтера, когда у последнего сводится годовой баланс. А проще говоря это кайф! :D
Спасибо еще раз!
__________________
Наша жизнь не принадлежит нам.
 
Ответить с цитированием
Ответ

Опции темы

Ваши права в форуме
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:19. Часовой пояс GMT +6.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot
Время генерации страницы 0.10933 секунды с 11 запросами