@Fell-x27 Я вижу ты и по разметке профи, понял уберу 2 функцию над первой ещё подумаю, хотя наверное и ее уберу) спасибо за советы. Уже убрал не задумываясь)
@Fell-x27 И код укоротился в двое, повыпиливал не нужные функции и регулярки, оставил лишь проверку длины логина, ну и проверку всех полей на пустоту оператором И &&. А на счёт email что делать как его обработать, знаю есть в html какое-то свойство забыл точно не напишу но в примерах есть, кроме этого свойства на стороне php нужна ли какая та проверка? Ну или функция. Ну или хоть что-то, или одного свойства хватит, которое и проверяет эту собачку @.
Собственно, как выше уже писал Сурикат, единственный способ проверить валидность email - отправить на него письмо и дождаться ответа (к примеру, пользователь должен нажать ссылку подтверждения регистрации). Остальное - усложнение жизни себе и другим. Разве что @ проверять, она таки должна быть обязательно. Ну и по теме: технически, логин может быть любым, даже на китайском, если человек того хочет. Собственно для этого utf* и придумали, что бы забыть как страшный сон сотни никому не нужных кодировок. Те кто считает иначе - ни разу не самобытные программисты идущие своим путем, а тупо не умеют в кодировки и экранирование. Пароль тоже может быть любым, если иное не продиктовано политикой ресурса. Ну, к примеру ты банк и обязан заботиться о клиенте, даже если он идиот или steam, где акки иначе будут угонять пачками. Короче, нужно взять себя в руки и засунуть свое чсв себе в жопу, чувак делает пароль 123 не потому что дурак, а потому что уже через час забудет о сайте ))
@romach Ты что придлагаешь мое чувство себе в зад засунуть, нахрена если я уже понял, да и пароль я регулярками не ограничивал. И вообще для себя я уже тему с регулярками закрыл, так как понял что без регулярок можно обойтись и они вообще не нужны.
а я вот хочу чтобы пользовательский UserName содержал только латиницу с разрешенными некоторыми символами Почему if ( фильтр ( [A-Za-z0-9_-]{3,25} ) ) а не $p = фильтр ( [A-Za-z0-9_-] ) if ( strlen ( $P ) ) в чем хуже первый ? ни в чем
@MouseZver Я не понял тебя ты хочешь чтобы я сравнил 2 регулярки? А зачем ограничивать юзера пусть и русский логин будет. И вообще лучше этот вопрос задай ребятам которые в этом понимают толк.
Не тебе, в целом тем кто ограничения вводит не исходя из технических возможностей, а просто потому что )
На стороне клиента у нас есть type="email" для полей ввода. Тогда первичную валидацию нам обеспечит браузер. Он проследит, чтобы была собачка, чтобы мэил был валидный и без левых символов. В общем, то, что надо. В 95% случаев хватит уже этого. Если хочешь запилить проверку почты перед отправкой, чтобы, если она кривая, сказать пользователю, мол, "кажется, вы ошиблись", на случай если у него браузер не умеет в валидацию, или если он ее выключил, поковыряв страницу, то юзай функции из семейства фильтров, типа filter_var, указывая тип фильтрации как "FILTER_SANITIZE_EMAIL". Подробнее - тут. Но на деле это не более, чем рюшечки для удобства самого пользователя.
@Fell-x27 Пойдет так? PHP: if(function_exits('filter_var)){ if(filter_var($email, FILTER_VALIDATE_EMAIL)){ $email = true; }else{ $email = false; } } Или можно по меньше сделать код, и правильно ли код написан?
Во-первых, отступы. Во-вторых, что будет, если filter_var не существует? В-третьих, фильтры уже много лет как часть ядра PHP, с чего ты взял, что нужно проверять их доступность? И в-четвертых, код можно сократить до: Код (PHP): $email_is_valid = filter_var($email, FILTER_VALIDATE_EMAIL)); Ну и в-пятых, обрати внимание, я создал новую переменную для результата проверки. А ты переписывал старую, в которой лежал email. В базу ты потом что будешь класть, true или false? Ну а если всего в одном месте результат этой проверки нужен, то сразу туда и пиши ее как есть, без промежуточных переменных.
@Fell-x27 У меня давно функция написана на проверку емаил, но не всю показал, так как было раньше ещё выражение было, опять забыл название этой фигни которую обсуждали, бывает) Смотри ты присвоил переменной проверку емаил, а если ошибка то вывод ее не делаешь. Можно так? PHP: $email_is_valid = filter_var($email, FILTER_VALIDATE_EMAIL)); if(count($err) > 0)//если ошибки есть вы водим их echo $err; else //иначе регаем юзера /*Регаем юзера*/ Или же лучшие: PHP: $email_is_valid = false;//по умолчанию ставим false $email_is_valid = filter_var($email, FILTER_VALIDATE_EMAIL)); if(count($email_is_valid) > 0) //если есть ошибка echo "error e-mail"; else //иначе регаем echo "good e-mail, registration ok"; //собственно регаем Ну или третий вариант лучше ты напиши а то с телефона очень долго набирать да знаю ошибочки лучше javascript-ом красиво оформлять но им не владею ещё. И заодно объясни мне я использую процедурный или ооп-ный стиль! Так интересно.
Тэк. Сначала почитай документацию по функциям, которые используешь. А потом перечитай то, что тут понаписал. Тот же фильтр вернет либо данные, либо false. Скажи, как этот код: PHP: if(count($email_is_valid) > 0) //если есть ошибка по-твоему должен показать наличие ошибки? --- Добавлено --- PHP: if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ echo 'Пожалуйста, перепроверьте введенный eMail'; } Вот. Все. Я не знаю, зачем что-то еще вокруг городить.
@Fell-x27 Не ты не понял я уже за ранее типа обработал ошибки, то-есть перед e-mail проверяется выбранный пол юзера длина логина пароли на совпадение а потом аж e-mail, вот и получается считаем количество ошибок, если они есть выводим их, если нету то пропускаем дальше. Вот с какой точки зрения я показывал, да и твой вариант тоже в принципе хотел написать.