За последние 24 часа нас посетили 17596 программистов и 1718 роботов. Сейчас ищут 1843 программиста ...

Регистрация пользователя на сайте

Тема в разделе "PHP и базы данных", создана пользователем Dasha97, 7 июл 2017.

  1. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Я так и не увидел, что Вы согласились, со своей неправотой. Вы ведь навязываете свою точку зрения, при этом говорите, что нужно больше свобод - парадокс. При этом аргументы воспринимаете, как демагогию.
    Вы говорите, что нужна кириллица - я не против. Но пусть каждый решает сам для себя.
    --- Добавлено ---
    Аргументы - это не Ваше субъективное мнение. Я бы хотел увидеть аргументы по поводу этого оскорбления.
    При этом я еще никого не оскорблял, а на меня накинулись уже два модератора.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты к своим тезисам приведи аргументы, тогда мы к своим начнём.
    --- Добавлено ---
    вот это называется демагогия и словоблудие

    разговор не про каждого, который там что-то себе решает, а про архитектуру приложения, которая должна вытекать из технических возможностей и ограничений используемых инструментов.

    Всё остальное - от лукавого.
     
  3. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Я не вижу смысла продолжать этот диалог.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну... очевидно, что ты написал просто вещей с потолка, которые считал правильными, но не знал почему.
    можно копнуть и выяснить, какие из них действительно имеют смысл и почему, как например ограничение на запуск js. Но оно тоже довольно шаткое.

    А можно забить и вернуть с гордо поднятым носом в свою нору неведенья и дальше считать, что в запрете дефиса есть смысл не меньший, чем в других запретах, т.к. "они же нужны".
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Второй демагогический страйк.

    И да, твои попытки перевода темы не являются аргументами. Они как минимум в принципе не имеют отношения к теме разговора. И я не навязываю свою точку зрения. Я ее объясняю. А ты свою объяснить так и не смог. Но зато начал переводить разговор на меня, ударился в философию и софистику. И в этом снова обвиняешь меня. Это голая демагогия. По этому я ее так и называю. И да, третий демагогический страйк - это вылет на неделю. Так, на всякий.

    А, постой, или ты имел ввиду, что я посягаю на твою свободу страдать херней и заблуждаться? Типа невежество и непрофессионализм - это право каждого специалиста-профессионала? Нет, это так не работает. Ты или профессионал или нет.
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    PHP:
    1.         $ARGS = [
    2.             'username' => [
    3.                 'filter' => FILTER_VALIDATE_REGEXP,
    4.                 'options' => [
    5.                     'regexp' => '/^[A-Za-z0-9_-]{3,25}$/'
    6.                 ]
    7.             ],
    8.             'email' => FILTER_VALIDATE_EMAIL,
    9.             'password' => FILTER_UNSAFE_RAW,
    10.             'confirm_password' => FILTER_UNSAFE_RAW
    11.         ];
    12.        
    13.         $INPUTS = filter_input_array ( INPUT_POST, $ARGS );
    14.        
    15.         $E = [];
    16.        
    17.         if ( $INPUTS['username'] === NULL )
    18.         {
    19.             $E['username'] = 'Undefined username :(';
    20.         }
    21.         elseif ( $INPUTS['username'] === FALSE )
    22.         {
    23.             $E['username'] = 'Пожалуйста, введите имя, содержащее от 3-х до 25 латинских символов.';
    24.         }
    25.         elseif ( SQL::P( 'SELECT ID FROM USRACCOUNT WHERE lower ( USERNAME ) = ?', [ strtolower ( $INPUTS['username'] ) ] ) -> rowCount() > 0 )
    26.         {
    27.             $E['username'] = 'Введенное имя уже используется.';
    28.         }
    29.         if ( $INPUTS['email'] === NULL )
    30.         {
    31.             $E['email'] = 'Undefined email :(';
    32.         }
    33.         elseif ( $INPUTS['email'] === FALSE )
    34.         {
    35.             $E['email'] = 'Адрес электронной почты должен быть валидным.';
    36.         }
    37.         elseif ( SQL::P( 'SELECT ID FROM USRACCOUNT WHERE lower ( EMAIL ) = ?', [ strtolower ( $INPUTS['email'] ) ] ) -> rowCount() > 0 )
    38.         {
    39.             $E['email'] = 'Введенная почта уже используется.';
    40.         }
    41.         if ( $INPUTS['password'] === NULL )
    42.         {
    43.             $E['password'] = 'Undefined password :(';
    44.         }
    45.         elseif ( empty ( $INPUTS['password'] ) )
    46.         {
    47.             $E['password'] = 'Пожалуйста, введите пароль.';
    48.         }
    49.         elseif ( $INPUTS['password'] != $INPUTS['confirm_password'] )
    50.         {
    51.             $E['password'] = 'Введенные пароли не совпадают.';
    52.         }
    --- Добавлено ---
    даже в фильтрах плоха регулярка?

    При 10милл. цикле фильтр обгоняет прег мач на 2 секунды
     
  7. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Я просто вижу двух модераторов, которые провоцируют срач. Я не собираюсь спорить - наши точки зрения очень субъективны. Спор бесполезен. А забанить можете меня навсегда.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    твоя - субъективна
    моя исходит из ограничений технических средств и не является субъективной

    ничего плохого в выявлении заблуждений и их изучении я не вижу
    --- Добавлено ---
    плоха для чего?
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    В том что без регулярки можно обойтись функцией strlen для подсчета, но код порядком длиннее будет и не по оптимизации
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    А я вижу дискуссию между тремя участниками форума.

    Я б не сказал, что strlen длиннее, чем
    PHP:
    1. $ARGS = [
    2.             'username' => [
    3.                 'filter' => FILTER_VALIDATE_REGEXP,
    4.                 'options' => [
    5.                     'regexp' => '/^[A-Za-z0-9_-]{3,25}$/'
    6.                 ]
    7.             ],
    8.             'email' => FILTER_VALIDATE_EMAIL,
    9.             'password' => FILTER_UNSAFE_RAW,
    10.             'confirm_password' => FILTER_UNSAFE_RAW
    11.         ];
    12.      
    13.         $INPUTS = filter_input_array ( INPUT_POST, $ARGS );
    Это раз.
    Ну и данный фильтр, как по мне, сделан не для проверок длины строки. Скорее уж для какой-то экзотики, связанной именно с анализом контента переданного. А длину строки регуляркой измерять - с пушки по воробьям палить, имхо.
     
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Сверяя со всем кодом? или с нюансом в рег-выражении {3,25}?
    --- Добавлено ---
    это часть от кода регистрации, не залил пока в Git
     
  12. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    Мое мнение на счёт кириллицы, а зачем она нужна в логине, если на сайт авторизуешся по логину, какая кириллица при входе не пойму. Хватит того что можно инфу посмотреть реальное имя и фамилия юзера. Вот там и будет кириллица :D я не видел сайты которые используют кириллицу при входе в него.
     
    Maputo и MouseZver нравится это.
  13. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Отсыплю вам немного валидных email`ов в нагрузку к кириллическим логинам )
    Код (Text):
    1. "very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
    2. #!$%&'*+-/=?^_`{}|~@example.org
    3. user@domain
     
    Maputo нравится это.
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Обычная. Чем логин "_не_скажу_" не логин?
    Ты прямо сейчас сидишь на таком.
    --- Добавлено ---
    Про валидацию имейлов целую статью на хабре помню по части того, что она не нужна :)

    Суть идеи в том, что валидность email не гарантирует его реальность и тот факт, что пользователь им владеет. Это все проверяется отправкой письма юзеру.. В итоге, бритвой Оккама можно нафиг срезать все проверки почты. И что единственное, для чего имеет смысл делать базовую проверку типа валидации пхпшным фильтром вкупе с выставлением типа input как email - это чтобы пользователю напомнить, что он забыл собаку написать или точку где-то после нее. Остальное же - пустая трата времени.
     
    romach нравится это.
  15. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    последний не проходит
    --- Добавлено ---
    PHP:
    1. <?php
    2.  
    3. $E = [
    4.     '"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com',
    5.     "#!$%&'*+-/=?^_`{}|~@example.org",
    6.     'user@domain'
    7. ];
    8.  
    9. echo implode ( '<br>', array_map ( function ( $A )
    10. {
    11.     return ( filter_var ( $A, FILTER_VALIDATE_EMAIL ) ? "$email is valid" : "$email is NOT valid" );
    12. }, $E ) );
     
    Maputo нравится это.
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    Согласен это логин, на счет эмайла согласен проверка не нужна, как описали выше. А с логином регулярках, ещё не убедили, вот например, юзер регается и себе ник создаёт такой (я пробел их тоже можно ставить) представьте себе такой ник? Или все же это нормально? Вот убедите меня и я соглашусь с вами.
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    А что с ним не так? На этом форуме можно такой ник зарегать, к примеру. Ну..почти такой. Тут выставлено ограничение на длину ника в 25 символов, а он чуть больше. Это, все же, индексируемое поле и все такое прочее.. Но ники на кириллице люди юзают тут. Какая разница-то, на каком языке ник? :) Ну кроме разрыва шаблона от того, что такое, оказывается, возможно? В чем проблема наличия пробелов, к примеру?

    У ряда работодателей на форуме вместо ников инициалы. Фамилия. И. О. Почему бы нет? И на кириллице и с пробелами. Не знаю, в чем я тебя должен убедить, если честно. Может быть ты расскажи, в чем видишь проблему? В техническом плане.
     
  18. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    одно поле в БД состоит из транслит name, а второе real_user_name

    https://php.ru/forum/members/aleks8.63378/
    --- Добавлено ---
    в пхпюру вовсе ид используют, для красоты и СЕО приписывают перед ID названия форума / ника - транслит версию кирилицы
     
  19. SXdevel

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

    С нами с:
    24 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    ЧСВ, потому что могу и потому что хочу, хозяин - барин и делает свои правила, вот поэтому всегда будут ограничения в наборе символов. И если ресурс интересный и полезный, будут следовать не смотря на "бессмысленную глупую хрень". И спорить либо что то тут доказывать бесполезно, не доросли общим развитием, это как требовать одного браузера на всех и единого языка программирования
     
  20. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    Меня просто безопасность беспокоит, если они вместо ника что то другое вставят, знаю можно экранировать данные htmlspecialchars. Ну все же... Или дайте советик как поступить мне по другому, что в таких случаях делать, чтобы не писать регулярках. Длину я понял можно считать функцией strlen().
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Беспокоит абстрактно так, на всякий случай, или же ты знаешь конкретную уязвимость, связанную с пробелами или черточками в логинах? Я вот не знаю. Чем отличается символ пробела от символа "_"? Номером. Все. На низком уровне любая строка - просто набор байт. Так какая нам разница, какие там байты прописаны?

    Опасность тут ровно та же, что и с любыми другими данными, приходящими от пользователя. Но мы же знаем, как их избежать? Мы же выставляем соединение БД с явным указанием кодировок? Мы же экранируем строку спец функциями? Мы же, раз на то пошло, знаем про подготовленные выражения и умеем их применять, верно? Поле ввода комментариев на сайте не менее опасно, чем поле ввода логина - с ним легче работать, и нагрузка на него гораздо больше. Но ты же не боишься кириллицы и пробелов с черточками в комментах?

    Ну а те же SQL-инъекции, или PHP-инъекции, или JS-инъекции и прочие XSS, они разве на кириллице пишутся? Нет. Получается, безопаснее латиницу запретить...

    Не можно, а нужно. Иначе безобидная угловая скобочка в любой точке сайта, пришедшая в каком-нибудь комменте, сломает тебе нафиг верстку.
    Не говоря уже о тоннах XSS-а, который тут же повсюду расцветет.

    И это, в общем-то не экранирование, а подмена данных. По этому делать ее надо на выводе, а не на приеме.

    Лучше mb_strlen, когда речь идет о многобайтовых кодировках типа UTF-8. Это давняя багофича PHP. Суть в том, что strlen возвращает длину в байтах, а не в символах. Кириллические буквы занимают по 2 байта. mb_strlen учитывает этот нюанс и возвращает длину строки в символах.
    --- Добавлено ---
    Ды вот же. И это грустно.
     
  22. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    Ой да mb_strlen функция для проверки длины, вы меня убедили, серьезно нафиг уберу с регистрации эти как их там забыл :D ну короче ты понял.
     
    Fell-x27 нравится это.
  23. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Это еще что. Некоторые люди ограничения ставят на символы в пароле. Или чистят его стриптагами и прочей бесовщиной. А потом пускают под хэш, хотя казалось бы, какая нафиг разница хэш-функции, что там было изначально?

    А все от непонимания происходящего. Люди чот делают, но сами не знают что и зачем. В видеокурсах увидели, и повторяют бездумно.
     
  24. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    О вспомнил как их там регулярки :D три минуты и убрал их все их было штук 5 :D я просто не знал этой всей инфи которую перечитал в данном посте, теперь закрепил и знаю.
    Вот теперь еще вопрос про функции, стоит ли при вводе реальных имён и фамилий использовать функцию ucfirst() для чего она я читал и не понял розжуйте для меня ее.
    И ещё одна функция которую использую ctype_digit() читал тоже, преобразует первый символ в верхний регистр, но для меня это не о чем не говорит, использую эту функцию для имён фамилии и логина юзера, одним словом эту функцию тоже пожалуйста розжуйте для меня, спасибо.
     
  25. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Как по мне - вообще не нужно пользовательские данные своими руками трогать.
    Хочешь отображать что-то с большой буквы? Юзай CSS. Там есть свойство text-transform, у которого есть значение capitalize.
    Чот ты путаешь. Она ничего не преобразует. Она просто проверяет, все ли символы в строке являются цифрами.
    Ну а чего непонятного? Первый символ в строке делает заглавным. Это в доке написано же. А для чего ее применять в конкретном случае - ну тут уж тебе решать. Это инструмент, как и все остальное.

    Ну если именя и фамилии еще куда ни шло, то вот логин преобразовывать ни в коем случае нельзя. Как его человек ввел, таким он и должен быть. Значит так нужно пользователю. Логин - не имя. С маленькой так с маленькой.
     
    _ne_scaju_ нравится это.