Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Таки, регистрация пользователя.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Alessanderrr
Отправлено: 12 Мая, 2015 - 17:00:41
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




Доброго времени суток, Товарищи!
Дополз помаленьку до регистрации пользователя.
Сначала создал просто ввод данных в форму и добавление регистрации, затем начал помаленьку добавлять условия. Вроде все сделал, все условия работали, перешел к разбору инфы о том как пароль проверять. Первый тест - и он у меня ругается на введенный логин, что мол уже существует в системе!
Пересмотрел вроде все на несколько раз, ниче найти не могу. Странно еще то, что я ж ниче вроде не менял больше, мистика, однако!
Помогите найти косяк, пожалуйста)

И заодно ответьте мне на пару наверно банальных вопросов:
1) Как сделать (по феншую) проверку логина и авторизацию регистронезависимой?
2) Могу ли я сравнивать значение в базе со значением переменной $password? Не очень пока понимаю, как работает md5.
3) Проверку длины пароля нужно делать на основе $_POST['password'] и ни в коем случае не $password, верно? или я совсем балбес и нифига не шарю и всё напрочь не так? если да, то как надо? Закатив глазки

Ну и код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. require_once 'dbcfg.php';
  3.  
  4. $db = mysql_connect($db_host, $db_user, $db_pass);
  5. mysql_select_db($db_name, $db);
  6.  
  7. $login = $_POST['login'];
  8. if (!preg_match("/^[a-zA-Z0-9]+$/", $login))
  9.         die ("Логин должен состоять из латинских символов и цифр");
  10. if(strlen($login) < 3 or strlen($login) > 30)
  11. die ("Логин должен быть не менее трех и не более тридцати символов");
  12. if(mysql_query("SELECT user_id FROM user WHERE user_name='$login'"))
  13. die ("Такой пользователь уже существует");
  14.  
  15. if(strlen($_POST['password']) < 3 or strlen($_POST['password']) > 30)
  16. die ("Пароль должен быть не менее трех и не более тридцати символов");
  17.  
  18. $password = md5(md5(trim($_POST['password'])));
  19.  
  20.  
  21. if(mysql_query("INSERT INTO user SET user_name='".$login."', user_password='".$password."'"))
  22.         echo "Регистрация прошла успешно";
  23. else
  24.         die ("Что-то пошло не так");
  25.  
  26. ?>


Сейчас всё у меня встает на проверке наличия такого пользователя в базе. Что бы я ни вбил, пишет что такой юзер уже есть.
Помогите пожалуйста! Белый флаг

ЗЫ. Про mysqli знаю Радость

(Отредактировано автором: 12 Мая, 2015 - 17:01:45)

 
 Top
file.shreder
Отправлено: 12 Мая, 2015 - 22:21:15
Post Id


Посетитель


Покинул форум
Сообщений всего: 286
Дата рег-ции: Окт. 2014  


Помог: 2 раз(а)

[+]


А ты уверен что там без ошибок написано? Там где именно проверка на существование пользователя...
(Добавление)
PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT username FROM ".$mysql_table." WHERE username = '".$newusername."'";
  2.       $result = mysql_query($sql, $db);
  3.       if ($data = mysql_fetch_array($result))
  4.       {
  5.          $error_message = 'Такой пользователь уже существует';
  6.       }
 
 Top
dcc0
Отправлено: 12 Мая, 2015 - 22:43:58
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Хотя выше правильно

CUt
А я полез login сравнивать с тем что в массиве.
А надо всего лишь проверить, пришли ли данные.

(Отредактировано автором: 12 Мая, 2015 - 23:11:51)



-----
Март 2021. Бросил программирование
 
 Top
MAXUS
Отправлено: 13 Мая, 2015 - 07:46:58
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Alessanderrr пишет:

1) Как сделать (по феншую) проверку логина и авторизацию регистронезависимой?


В моем представлении по феншую проверка логина и пароля должна быть как раз регистрозависимой.

Другой вопрос - это желание избежать дублирования имен типа Vasya и vaSya, но это к проверке не относится. В этом случае при проверке существования при регистрации приводить передаваемое и получаемое значения к одному регистру.

(Отредактировано автором: 13 Мая, 2015 - 07:53:34)

 
 Top
Alessanderrr
Отправлено: 13 Мая, 2015 - 08:18:45
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




MAXUS пишет:
Alessanderrr пишет:

1) Как сделать (по феншую) проверку логина и авторизацию регистронезависимой?


В моем представлении по феншую проверка логина и пароля должна быть как раз регистрозависимой.

Другой вопрос - это желание избежать дублирования имен типа Vasya и vaSya, но это к проверке не относится. В этом случае при проверке существования при регистрации приводить передаваемое и получаемое значения к одному регистру.


Таки, проверка должна быть регистронезависимой для логина (в моем понимании) а для пароля, конечно, регистрозависимой. Зачем регистрозависимость для логина? логины видят все кому интересно, и это получается только неудобство при авторизации доставит, а пользы никакой.. не?

и я на пальцах понял как это сделать, но вопрос был не в том, делать ли или нет, а как именно сделать)
Собственно, решение видится так:
При сравнении существует ли такой юзер, значение из базы и значение из введенной формы приравнивается к одинаковому регистру, и таким образом дубль юзера создать не даст. Так же и при авторизации - сначала значения приводятся к единому регистру, а уже затем сравниваются, и если совпадают, то проверка выполняется успешно.
Сначала написал свое решение потом до конца сообщение написал, мы одно и то же написали)))

Но главная беда моего поста в том, что у меня процесс встал на проверке наличия такого же юзера в базе - что бы я ни ввел (при условии выполнения условий допустимости символов и длины логина) я в любом случае получаю сообщение о том что такой юзер уже существует. Косяк гдета должен быть элементарный но найти его чета у меня не получается, вот и прошу помощи!

(Отредактировано автором: 13 Мая, 2015 - 08:27:23)

 
 Top
MAXUS
Отправлено: 13 Мая, 2015 - 08:24:22
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Alessanderrr пишет:

Таки да, проверка должна быть регистронезависимой, и я на пальцах понял как это сделать, но вопрос был не в том, делать ли или нет, а как именно сделать)
Собственно, решение видится так:
При сравнении существует ли такой юзер, значение из базы и значение из введенной формы приравнивается к одинаковому регистру, и таким образом дубль юзера создать не даст.

Да. Я бы еще проверял на совпадение TOMAS и T0MAS. А при использовании кириллицы ТОМАS и TOMAS... Т.е. приводил к одному хэшу из латиницы.
Alessanderrr пишет:

Так же и при авторизации - сначала значения приводятся к единому регистру, а уже затем сравниваются, и если совпадают, то проверка выполняется успешно.
Сначала написал свое решение потом до конца сообщение написал, мы одно и то же написали)))

При авторизации регистр должен иметь значение.
Alessanderrr пишет:

Но главная беда моего поста в том, что у меня процесс встал на проверке наличия такого же юзера в базе - что бы я ни ввел (при условии выполнения условий допустимости символов и длины логина) я в любом случае получаю сообщение о том что такой юзер уже существует. Косяк гдета должен быть элементарный но найти его чета у меня не получается, вот и прошу помощи!


Тебе же написали, что проверка на существование у тебя составлена не правильно. Всегда возвращает true.

(Отредактировано автором: 13 Мая, 2015 - 08:28:12)

 
 Top
Alessanderrr
Отправлено: 13 Мая, 2015 - 08:42:06
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




MAXUS пишет:

При авторизации регистр должен иметь значение.


Таки, прошу объяснить, зачем должен иметь значение регистр логина при авторизации? Не с целью поперепираться, но с целью понять как правильно и почему


MAXUS пишет:
Тебе же написали, что проверка на существование у тебя составлена не правильно. Всегда возвращает true.

Прочитал коряво первый ответ, отвлекли, пардон. Теперь понял!
(Добавление)
MAXUS пишет:

Да. Я бы еще проверял на совпадение TOMAS и T0MAS. А при использовании кириллицы ТОМАS и TOMAS... Т.е. приводил к одному хэшу из латиницы.

Если я правильно понял вышенаписанное, то моя первая проверка отсекает возможность написание чего-либо кириллицей... Не?
если нет, то можно примерчик как правильно? Закатив глазки
 
 Top
MAXUS
Отправлено: 13 Мая, 2015 - 09:08:39
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Alessanderrr пишет:

Таки, прошу объяснить, зачем должен иметь значение регистр логина при авторизации? Не с целью поперепираться, но с целью понять как правильно и почему


Количество комбинаций возрастает в разы, таким образом усложняется подбор. Обрати внимание на сообщения о степени защищенности пароля в банковских системах, например, да в тех же cms.

Alessanderrr пишет:

Если я правильно понял вышенаписанное, то моя первая проверка отсекает возможность написание чего-либо кириллицей... Не?
если нет, то можно примерчик как правильно? Закатив глазки


Отсекает. Но не отсекает первый пример, где вместо O используется ноль. Про кириллицу просто для примера сказал. В моей практике был миллион случаев, когда, например, на форумах тролли регистрировали похожие на нормальных пользователей имена и писали от их имени всякую хрень. Модераторов иногда это ставило в конкретный тупикУлыбка
 
 Top
Alessanderrr
Отправлено: 13 Мая, 2015 - 09:18:32
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




MAXUS пишет:

Количество комбинаций возрастает в разы, таким образом усложняется подбор. Обрати внимание на сообщения о степени защищенности пароля в банковских системах, например, да в тех же cms.

В моем случае логин нужен для форума-блога и т.д., т.е. там, где у любого незареганного есть возможность вживую увидеть логины. В данной ситуации мне кажется наличие-отсутствие регистра при вводе логина значения особого не имеют... или я не прав?
ну вот если я решу взломать юзера MAXUS к примеру)))) я ж могу зайти в любую тему и увидеть его логин в коментах к постам))
Хотя, мне сейчас пришло в голову: данная проблема упраздняется в случае, если при регистрации обязательно указание email, который не отображается в профиле, и при этом авторизация производится по сочетанию email/пароль, а не логин/пароль, верно? или я неправ? если неправ, где и почему? Закатив глазки Язычок


MAXUS пишет:
Отсекает. Но не отсекает первый пример, где вместо O используется ноль. Про кириллицу просто для примера сказал. В моей практике был миллион случаев, когда, например, на форумах тролли регистрировали похожие на нормальных пользователей имена и писали от их имени всякую хрень. Модераторов иногда это ставило в конкретный тупикУлыбка

А вот это очень прикольно)) можно примерчик, как это добро реализовать?
 
 Top
MAXUS
Отправлено: 13 Мая, 2015 - 14:53:37
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Alessanderrr пишет:

ну вот если я решу взломать юзера MAXUS к примеру)))) я ж могу зайти в любую тему и увидеть его логин в коментах к постам))


Я ж не знаю, какая у тебя конкретная задача. В отношении форума, согласен, не особо поможет, но в отношении какого-нибудь сервиса усложнит. А регистрозависимый пароль - это обязательно, кмк. Хотя... по большому счету тоже зависит от задачи. Ты просто про фэншуй спрашивал. Как сказал один пожарник, по фэншую вместо экибаны тут должен быть огнетушительУлыбка

Alessanderrr пишет:

Хотя, мне сейчас пришло в голову: данная проблема упраздняется в случае, если при регистрации обязательно указание email.


Если используешь e-mail, то обязательно организуй подтверждение через отправку письма. И принимай во внимание, что в email регистр не играет роли.

Alessanderrr пишет:

А вот это очень прикольно)) можно примерчик, как это добро реализовать?


Нене... Опытом поделиться или что-то для себя интересное подчерпнуть - это завсегда. А напишите за меня пожалуйста - это, прости, но лень. В общих чертах - меняешь все спорные символы на определенный символ латиницы, таким образом формируешь хэш. Например, ноль на O, при этом переводишь или в нижний или в верхний регистр (как удобно). При проверке на существование сравниваешь с ним, а не с логином.

(Отредактировано автором: 13 Мая, 2015 - 15:18:38)

 
 Top
Alessanderrr
Отправлено: 13 Мая, 2015 - 16:24:58
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Май 2015  


Помог: 0 раз(а)




MAXUS пишет:
Alessanderrr пишет:

ну вот если я решу взломать юзера MAXUS к примеру)))) я ж могу зайти в любую тему и увидеть его логин в коментах к постам))


Я ж не знаю, какая у тебя конкретная задача. В отношении форума, согласен, не особо поможет, но в отношении какого-нибудь сервиса усложнит. А регистрозависимый пароль - это обязательно, кмк. Хотя... по большому счету тоже зависит от задачи. Ты просто про фэншуй спрашивал. Как сказал один пожарник, по фэншую вместо экибаны тут должен быть огнетушительУлыбка

Alessanderrr пишет:

Хотя, мне сейчас пришло в голову: данная проблема упраздняется в случае, если при регистрации обязательно указание email.


Если используешь e-mail, то обязательно организуй подтверждение через отправку письма. И принимай во внимание, что в email регистр не играет роли.

Alessanderrr пишет:

А вот это очень прикольно)) можно примерчик, как это добро реализовать?


Нене... Опытом поделиться или что-то для себя интересное подчерпнуть - это завсегда. А напишите за меня пожалуйста - это, прости, но лень. В общих чертах - меняешь все спорные символы на определенный символ латиницы, таким образом формируешь хэш. Например, ноль на O, при этом переводишь или в нижний или в верхний регистр (как удобно). При проверке на существование сравниваешь с ним, а не с логином.


Хорошо, спасибо большое))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB