PDA

Просмотр полной версии : [Вопрос] Проверка на e-mail



DmX
18.10.2015, 16:34
Помогите сделать проверку на e-mail, корректировка.

Что бы обязательно было в мыле @ и .ru .com и т.д

Desulaid
18.10.2015, 16:41
:D

for(new i = strlen(inputtext)-1;i != -1;i--)
{
if(inputtext[i] == '@') || (inputtext[i] == 'ru') || (inputtext[i] == 'com') || (inputtext[i] == '.'))
continue;
else return // ...
}

$continue$
18.10.2015, 16:47
Самый адекватный вариант:


#define IsValidEmail(%1) \
regex_match(%1, "[a-zA-Z0-9_\\.]+@([a-zA-Z0-9\\-]+\\.)+[a-zA-Z]{2,4}")

DmX
18.10.2015, 17:03
Самый адекватный вариант:


#define IsValidEmail(%1) \
regex_match(%1, "[a-zA-Z0-9_\\.]+@([a-zA-Z0-9\\-]+\\.)+[a-zA-Z]{2,4}")


Ты забыл указать, что тут нужен плагин )

Seregamil
18.10.2015, 17:20
Ты забыл указать, что тут нужен плагин )
Ииии?

gangzone.ini
18.10.2015, 17:39
Ты забыл указать, что тут нужен плагин )
Если подключить плагин, это плохо?)

Unreal
18.10.2015, 18:30
Если подключить плагин, это плохо?)

1 плагин чтобы просто проверить на корректность эмеила ?

Daniel_Cortez
18.10.2015, 18:49
1 плагин чтобы просто проверить на корректность эмеила ?
Если у вас есть другие варианты, уверен, вас здесь будут рады выслушать.


От себя могу сказать, что на регексах довольно сложно сделать надёжный вариант проверки адреса E-Mail.
Здесь (http://lurkmore.to/Regexp#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80) можно найти выражение для проверки адреса на соответствие RFC822, но мало того, что этот вариант крайне сложен, так ещё и стандарт устаревший.

IMHO, если вы используете mailer.inc, надёжнее будет в OnMailScriptResponse проверять содержимое ответа и по нему уже делать вывод, правда на HTTP-запрос уйдёт некоторое время.

Unreal
18.10.2015, 18:56
Если у вас есть другие варианты, уверен, вас здесь будут рады выслушать.

чем вам вариант от Untonyst не нравится ?
хотя у него недочет есть.



new nosi = strlen(inputtext);
if(nosi < 6 || nosi > 32 || strfind(inputtext,"@",true) == -1 || strfind(inputtext,".",true) == -1)
{
return SendClientMessage(playerid,-1,"Ошибка, некорректный e-mail адресс");
}

Daniel_Cortez
18.10.2015, 19:00
чем вам вариант от Untonyst не нравится ?
хотя у него недочет есть.



new nosi = strlen(inputtext);
if(nosi < 6 || nosi > 32 || strfind(inputtext,"@",true) == -1 || strfind(inputtext,".",true) == -1)
{
return SendClientMessage(playerid,-1,"Ошибка, некорректный e-mail адресс");
}
".@1234" - проходит.

Btw, что такое "nosi"?

Unreal
18.10.2015, 19:05
".@1234" - проходит.

Btw, что такое "nosi"?

ясно

nosi ничего не значит, это типа asd, я ведь просто пример показал

$continue$
18.10.2015, 19:51
Мир ещё до сих пор не научился проверять валидность электронной почты. Даже в PHP - нет точности, что электронная почта будет валидна. PHP программисты, проверяют регулярными выражениями, вводимые данные. Затем отправляют уникальный ключ (ссылку) на электронную почту, где пользователь переходит по ссылке и тем самым подтверждает валидность. В SA-MP же нет такой возможности (Используя GUI SA-MP). В MTA можно перейти по ссылке прямо из клиента, но это MTA. В SA-MP же можно отправить секретный код, который нужно будет ввести в GUI (диалог)
Мое предложение:

Использовать данный include/php - scripts (http://rghost.ru/57354232)

Пример использования:


Вот инклуд, это не плагин. Мне на Gmail все приходит, как и на другие почтовые ящики.
http://rghost.ru/57354232
Использование:

SendMail( to[], sender_email[], sender_name[], subject[], message[] );

#define MAILER_URL "my-server.com/mailer.php" // вставить в начало мода и напишите путь до mailer.php на вашем сервере/сайте

#include <mailer> // в начало мода


// пример использования
public OnGameModeInit( )
{
SendMail( "Маил куда отправлять@gmail.com", "[email protected]", "Название", "Тема сообщения", "Текст сообщения" );
}


Проверить регулярным выражением




#define IsValidText(%1) \
regex_match(%1, "/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})$/")



Если электронная почта валидна - отправить сообщение с секретным кодом, что бы в дальнейшем ввести в GUI


Profit

Desulaid
18.10.2015, 19:57
".@1234" - проходит.

Можно сделать отправку проверочного кода на указанный e-mail и тогда игрок сам пожалеет, что ввел такой e-mail ;)