авторизация
Подскажите пожалуйста, как правильно расшифровать пароль и сделать авторизацию/регистрацию php по табличке account колонки username/sha_pass_hash. никак не выходит что только не перепробывал.
Код:
sha1($_POST['login'] ."',':','". $_POST['password']) |
SELECT SHA1(CONCAT(UPPER(`username`), ':', UPPER(pass)));
Вы наверное забыли перевести логин и пароль в верхний регистр. |
Перепробывал многие варианты, но в чем то ошибся..
Код:
if (!empty($_POST)) |
ужасный код, хоть и через ПДО...
Опустим то, что твой код - это только кусок кода а не весь алгоритм. Надеюсь что $db где-то выше в начале файла объявляется. далее ты просто выбираешь "SELECT `id` FROM `account` WHERE `username`=".$login." LIMIT 1" и если такая запись существует снова сделать запрос уже с хешем пароля, и без проверки выполнения запроса тупо присваиваешь ИД-шник в сессию. Такое конечно работать не будет. |
работать то будет, только зачем делать два запроса то? делайте один запрос сразу со всеми критериями.
и зачем же так изголяться с апперами :) сделайте просто один SHA1(UPPER( от строки $_POST['login']) . ':' . $_POST['password'] смысл какой по отдельным кускам регистр переводить? лично я люблю железобетонный код. совершенно тупой и без использования рюшек, не вызывающий никакого двоякого чувства. в частности SHA1(UPPER( я бы сделал на стороне пхп. это во первых проще и понятнее для будущей отладки, проще sql серверу и избавляет от передачи по сети собсно логина и пароля - это для фанатов ПДО, хотя тут на локалхосте это ПДО как пятое колесо. |
как говориться, "вынести за скобки" upper сам бог велел. И это даже не из-за железобетонности, а просто из соображений логики и оптимизации кода.
А вот на счет ПДО не согласен. в данный момент, когда неумолимо приближается пхп 6, писать проекты на библиотеке mysql просто убийственно. так как в 6-ке обещают что эта библиотека будет иметь статус "Deprecated", а преемница mysqli до сих пор очень сыра и нестабильна, то волей неволей приходится обращать свой взор на монструозный ПДО. Надо будет в выходной выделить пару часиков и накидать примерный код движка с авторизацией. (да бы новички смогли понять всю логику взаимодействия пхп и базы) Как сделаю - опубликую здесь. |
да я не претендую на оригинальность кода. К сожалению мои знания в php не столь велики чтобы сразу делать лучше. Буду ждать примерчика авторизации. Большое спасибо
|
вроде разобрался. сделал это так:
Код:
if (!empty($_POST)) нашел выход через Код:
$_SESSION['user_id'] = $rows['0']['id']; |
Вложений: 1
Вот накидал пример авторизации через сессии (без регистрации). Всё работает.
Сразу предупреждаю, что это пример, а не рабочий движок. |
Текущее время: 19:58. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS