За последние 24 часа нас посетили 17650 программистов и 1720 роботов. Сейчас ищут 1844 программиста ...

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

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

  1. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    Я вижу ты и по разметке профи, понял уберу 2 функцию над первой ещё подумаю, хотя наверное и ее уберу) спасибо за советы.
    Уже убрал не задумываясь)
     
    #51 _ne_scaju_, 9 июл 2017
    Последнее редактирование: 9 июл 2017
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    И код укоротился в двое, повыпиливал не нужные функции и регулярки, оставил лишь проверку длины логина, ну и проверку всех полей на пустоту оператором И &&. А на счёт email что делать как его обработать, знаю есть в html какое-то свойство забыл точно не напишу но в примерах есть, кроме этого свойства на стороне php нужна ли какая та проверка? Ну или функция. Ну или хоть что-то, или одного свойства хватит, которое и проверяет эту собачку @.
     
  3. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Собственно, как выше уже писал Сурикат, единственный способ проверить валидность email - отправить на него письмо и дождаться ответа (к примеру, пользователь должен нажать ссылку подтверждения регистрации). Остальное - усложнение жизни себе и другим. Разве что @ проверять, она таки должна быть обязательно.

    Ну и по теме: технически, логин может быть любым, даже на китайском, если человек того хочет. Собственно для этого utf* и придумали, что бы забыть как страшный сон сотни никому не нужных кодировок. Те кто считает иначе - ни разу не самобытные программисты идущие своим путем, а тупо не умеют в кодировки и экранирование. Пароль тоже может быть любым, если иное не продиктовано политикой ресурса. Ну, к примеру ты банк и обязан заботиться о клиенте, даже если он идиот или steam, где акки иначе будут угонять пачками. Короче, нужно взять себя в руки и засунуть свое чсв себе в жопу, чувак делает пароль 123 не потому что дурак, а потому что уже через час забудет о сайте ))
     
    Fell-x27 нравится это.
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @romach
    Ты что придлагаешь мое чувство себе в зад засунуть, нахрена если я уже понял, да и пароль я регулярками не ограничивал. И вообще для себя я уже тему с регулярками закрыл, так как понял что без регулярок можно обойтись и они вообще не нужны.
     
    #54 _ne_scaju_, 9 июл 2017
    Последнее редактирование: 9 июл 2017
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    а я вот хочу чтобы пользовательский UserName содержал только латиницу с разрешенными некоторыми символами

    Почему
    if ( фильтр ( [A-Za-z0-9_-]{3,25} ) )

    а не
    $p = фильтр ( [A-Za-z0-9_-] )
    if ( strlen ( $P ) )

    в чем хуже первый ? ни в чем
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    Я не понял тебя ты хочешь чтобы я сравнил 2 регулярки? А зачем ограничивать юзера пусть и русский логин будет. И вообще лучше этот вопрос задай ребятам которые в этом понимают толк.
     
    #56 _ne_scaju_, 9 июл 2017
    Последнее редактирование: 9 июл 2017
  7. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Не тебе, в целом тем кто ограничения вводит не исходя из технических возможностей, а просто потому что )
     
  8. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    На стороне клиента у нас есть type="email" для полей ввода. Тогда первичную валидацию нам обеспечит браузер. Он проследит, чтобы была собачка, чтобы мэил был валидный и без левых символов. В общем, то, что надо. В 95% случаев хватит уже этого.

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

    Но на деле это не более, чем рюшечки для удобства самого пользователя.
     
    #58 Fell-x27, 9 июл 2017
    Последнее редактирование: 9 июл 2017
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    Пойдет так?
    PHP:
    1. if(function_exits('filter_var)){
    2. if(filter_var($email, FILTER_VALIDATE_EMAIL)){
    3. $email = true;
    4. }else{
    5. $email = false;
    6. }
    7. }
    Или можно по меньше сделать код, и правильно ли код написан?
     
  10. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Во-первых, отступы.
    Во-вторых, что будет, если filter_var не существует?
    В-третьих, фильтры уже много лет как часть ядра PHP, с чего ты взял, что нужно проверять их доступность? :)

    И в-четвертых, код можно сократить до:
    Код (PHP):
    1. $email_is_valid = filter_var($email, FILTER_VALIDATE_EMAIL));
    Ну и в-пятых, обрати внимание, я создал новую переменную для результата проверки. А ты переписывал старую, в которой лежал email. В базу ты потом что будешь класть, true или false? :)

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

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    У меня давно функция написана на проверку емаил, но не всю показал, так как было раньше ещё выражение было, опять забыл название этой фигни :D которую обсуждали, бывает)
    Смотри ты присвоил переменной проверку емаил, а если ошибка то вывод ее не делаешь.
    Можно так?
    PHP:
    1. $email_is_valid = filter_var($email, FILTER_VALIDATE_EMAIL));
    2. if(count($err) > 0)//если ошибки есть вы водим их
    3. echo $err;
    4. else //иначе регаем юзера
    5. /*Регаем юзера*/
    Или же лучшие:
    PHP:
    1. $email_is_valid = false;//по умолчанию ставим false
    2. $email_is_valid = filter_var($email, FILTER_VALIDATE_EMAIL));
    3. if(count($email_is_valid) > 0) //если есть ошибка
    4. echo "error e-mail";
    5. else //иначе регаем
    6. echo "good e-mail, registration ok";
    7. //собственно регаем
    Ну или третий вариант лучше ты напиши а то с телефона очень долго набирать :D да знаю ошибочки лучше javascript-ом красиво оформлять но им не владею ещё.
    И заодно объясни мне я использую процедурный или ооп-ный стиль! Так интересно.
     
  12. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Тэк. Сначала почитай документацию по функциям, которые используешь. А потом перечитай то, что тут понаписал.
    Тот же фильтр вернет либо данные, либо false.
    Скажи, как этот код:
    PHP:
    1. if(count($email_is_valid) > 0) //если есть ошибка
    по-твоему должен показать наличие ошибки?
    --- Добавлено ---
    PHP:
    1. if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    2.     echo 'Пожалуйста, перепроверьте введенный eMail';
    3. }
    Вот. Все. Я не знаю, зачем что-то еще вокруг городить.
     
  13. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @Fell-x27
    Не ты не понял я уже за ранее типа обработал ошибки, то-есть перед e-mail проверяется выбранный пол юзера длина логина пароли на совпадение а потом аж e-mail, вот и получается считаем количество ошибок, если они есть выводим их, если нету то пропускаем дальше.
    Вот с какой точки зрения я показывал, да и твой вариант тоже в принципе хотел написать. :D