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 :: Проверка на существование email

 PHP.SU

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


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

> Без описания
Merrym
Отправлено: 04 Декабря, 2015 - 16:09:49
Post Id


Новичок


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


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




Всем привет!
Запутался чуток, помогите разобраться с MVC
Хочу проверить email на существование.
На jquery сделал такую функцию:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $("#regEmail").blur(function() {
  3.         $("#validform").html("");
  4.         if($(this).val() != '') {
  5.             var pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;
  6.             if(pattern.test($(this).val())){
  7.             $.get("/checkmail/"+$(this).val(), function(data, sucess) {
  8.                 if (data)
  9.                     $("#regEmail").css({'border': '1px solid #569b44'});
  10.                 else {
  11.                     $("#regEmail").css({'border': '1px solid #ff0000'});
  12.                     $("#validform").html($("#validform").html()+"EMAIL: Занят.<br>");
  13.                 }
  14.                 });
  15.             } else {
  16.                 $(this).css({'border' : '1px solid #ff0000'});
  17.                 $("#validform").html($("#validform").html()+"EMAIL: Не верно.<br>");
  18.                 return false;
  19.             }
  20.         } else {
  21.             $(this).css({'border' : '1px solid #ff0000'});
  22.             $("#validform").html($("#validform").html()+"EMAIL: Не должно быть пустым.<br>");
  23.         }
  24.     });
  25.  

Если есть какие-то ошибки, прошу отписать.Работает нормально, но это еще не факт, что правильно сделал.

На сервере через Routing ловлю checkmail/:email.
Где лучше проверять такие запросы, стоит ли создавать Контроллер? для одной проверки.Допустим я создам контроллер, и он в дальнейшем будет использован для других проверок, которые будут отправлены от клиента, через ajax, и тут сразу 2 вопрос, откуда отправлять клиенту ответ? представление создавать? для отправки true или false или null, или С контроллера отправлять echo json_encode();
 
 Top
higub
Отправлено: 04 Декабря, 2015 - 16:24:43
Post Id



Новичок


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


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

[+]


лучше на проверку email использовать серверные языки вроде php
к примеру http://ru[dot]stackoverflow[dot]com/ques[dot][dot][dot]0%BD%D0%B8%D0%B5
 
 Top
Merrym
Отправлено: 04 Декабря, 2015 - 16:51:46
Post Id


Новичок


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


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




Я на сервере использую проверку всегда.
Перед отправкой на сервер, на клиенте проверяется корректность.

Читал один пост, Мелкий советовал использовать filter_var().
А насчет http://habrahabr[dot]ru/post/55820/ регулярных выражений, я думал старый век.Лучше отправить письмо на почту, и пусть пройдет по силке.

Но пост чуток о другом)
 
 Top
Мелкий Супермодератор
Отправлено: 04 Декабря, 2015 - 18:58:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Merrym пишет:
Читал один пост, Мелкий советовал использовать filter_var().

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

Merrym пишет:
Лучше отправить письмо на почту, и пусть пройдет по силке.

А это и есть единственный способ узнать, что такой адрес существует и к нему имеет доступ этот пользователь.
Валидация адреса - лишь способ отклонить явно ошибочные.

Merrym пишет:
pattern = /^([a-z0-9_\.-])+@[a-z0-9-]+\.([a-z]{2,4}\.)?[a-z]{2,4}$/i;

Та же доменная зона .travel существует уже очень давно.
Если нет желания читать RFC, то или доверьтесь тем, у кого желание было (т.е. нативная функция, а для js - какой-нибудь известный вариант. Например jquery validate) или проверяйте на наличие @ и хотя бы одного символа до и после.

Создавать ли отдельный контроллер - зависит от политики проекта. Обычно для универсальных проверок, которые нужны в разных местах оправдано сделать отдельный контроллер. Если проверка нужна только где-то в одном месте - то лучше этот action разместить где-нибудь рядышком с обработчиком формы.
Вьюху для вывода JSON не делают. Бывает разный синтаксический сахар вроде какого-нибудь
PHP:
скопировать код в буфер обмена
  1. return response()->json($json); // laravel 5

в контроллере, или ещё какого-нибудь указания, что возвращается json, но вьюху под это дело не делают.


-----
PostgreSQL DBA
 
 Top
higub
Отправлено: 04 Декабря, 2015 - 19:07:09
Post Id



Новичок


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


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

[+]


ну а так-же надо поставить в форму recapcha
 
 Top
Merrym
Отправлено: 04 Декабря, 2015 - 20:39:01
Post Id


Новичок


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


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




Мелкий пишет:
Если нет желания читать RFC,

Я бы так не сказал...


Мелкий пишет:
контроллере, или ещё какого-нибудь указания, что возвращается json, но вьюху под это дело не делают.


Такой вопрос, если я отправляю ответ на ajax запрос, обязательно нужно в json_encode() - закодировать?.Или можно просто echo "строка";
(Добавление)
higub пишет:
recapcha
не понял, что за recapcha
(Добавление)
hidden поле сделать в форме, с хеш кодом?,который проверять на сервере?
 
 Top
Мелкий Супермодератор
Отправлено: 04 Декабря, 2015 - 21:28:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Merrym пишет:
Я бы так не сказал...

Ну так вперёд, они все публично-доступны.
Начните с исторических RFC 561, RFC 680, RFC 724, RFC 733, затем сколько-то штук обновлений за сорокалетнюю историю протокола, мне их лениво искать.
Актуальный rfc, вроде бы, за номером 5322. Стоит осмыслить ещё как минимум RFC 5321, который запрещает адреса типа a@b и требует FQDNs.

Merrym пишет:
если я отправляю ответ на ajax запрос, обязательно нужно в json_encode() - закодировать?.Или можно просто echo "строка";

AJAX'у всё равно. Исторически он вообще на XML ориентировался (за что и получил последней буквой именно X).


-----
PostgreSQL DBA
 
 Top
Merrym
Отправлено: 04 Декабря, 2015 - 21:52:11
Post Id


Новичок


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


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




Мелкий пишет:
AJAX'у всё равно. Исторически он вообще на XML ориентировался (за что и получил последней буквой именно X).

Я имел ввиду, чтоб не было потери данных.Лучше будет шифровать в строку, а на клиенте его принимать и обработать.

Еще 1 вопрос, стоит отправлять заголовок? Или просто делать echo "строка";
header("Content-Type: application/json; charset=UTF-8");
(Добавление)
После PSR http://svyatoslav[dot]biz/misc/psr_t[dot][dot][dot]nslation/#_PSR-2 начну RFC Хорошо
(Добавление)
http://rfc2[dot]ru даже в закладки добавил)
 
 Top
Merrym
Отправлено: 05 Декабря, 2015 - 20:15:43
Post Id


Новичок


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


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




Я так понял, форум называется "Мелкий"
 
 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