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 :: Функция проверки e-mail

 PHP.SU

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


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

> Без описания
geny
Отправлено: 08 Апреля, 2011 - 23:24:58
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Апр. 2011  


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




Почему иногда работает, а иногда нет?
PHP:
скопировать код в буфер обмена
  1. function checkmail($mail) {
  2.    $mail=trim($mail);
  3.    if (strlen($mail)==0) return -1;
  4.    if (!preg_match("/^[a-z0-9_-]{1,20}+(\.){0,2}+([a-z
  5. 0-9_-]){0,5}@(([a-z0-9-]+\.)+(com|net|org|mil|".
  6.    "edu|gov|arpa|info|biz|inc|name|
  7. [a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-".
  8.    "9]{1,3}\.[0-9]{1,3})$/is",$mail))
  9.    return -1;
  10.    return $mail;
  11. }

Помогите исправить код, запускаю так:
PHP:
скопировать код в буфер обмена
  1. if(checkmail($_POST['mail']) !== -1) { ...
Заранее спасибо!

(Отредактировано автором: 08 Апреля, 2011 - 23:25:20)

 
 Top
SAD
Отправлено: 08 Апреля, 2011 - 23:26:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




что значит иногда да, иногда нет? что засылаете? я именно эту функцию сам использовал раньше, все норм было
 
 Top
grefon
Отправлено: 08 Апреля, 2011 - 23:29:57
Post Id



Частый посетитель


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


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




Ой ё маё! А если у пользователя мыло будет в зоне ua, tv, ws или еще какой-нибудь?


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
SAD
Отправлено: 08 Апреля, 2011 - 23:30:59
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




grefon пишет:
Ой ё маё! А если у пользователя мыло будет в зоне ua, tv, ws или еще какой-нибудь?

и что?
geny пишет:
[a-z]{2}

вот вам и те зоны))
 
 Top
grefon
Отправлено: 08 Апреля, 2011 - 23:39:33
Post Id



Частый посетитель


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


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




SAD пишет:
и что?

mobi, tel и так далее? зачем перечислять в таком случае доменные зоны?
(Добавление)
И вообще, если в регулярке есть проверка на @, то зачем это:
PHP:
скопировать код в буфер обмена
  1. $mail=trim($mail);
  2. if (strlen($mail)==0) return -1;


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
SAD
Отправлено: 08 Апреля, 2011 - 23:45:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




trim нужен. если поле пустое, то сразу выйти.
функция старая. я отказался от нее
 
 Top
OrmaJever Модератор
Отправлено: 08 Апреля, 2011 - 23:53:20
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




geny пишет:
return -1;
return $mail;

после ретурна жизни нет. Функция всегда возвращает -1


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
SAD
Отправлено: 08 Апреля, 2011 - 23:56:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




неа, перед этим if стоит. если он выполнится то -1, если нет то $mail вернет
 
 Top
Okula
Отправлено: 09 Апреля, 2011 - 00:08:28
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


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




Просто жесть, а не регулярка. Вот и вся функция:
PHP:
скопировать код в буфер обмена
  1. function emailFormat($email) {
  2.   if(preg_match('/^([\w\-\.])+@([\w\-\.])+\.([a-z0-9])+$/i', $email) == 0)  return FALSE; else  return TRUE;
  3. }
  4.  
  5. if(!empty($email) && emailFormat($email) == TRUE) echo "E-mail соответствует заданому формату"; else echo "E-mail не соответствует заданому формату";

(Отредактировано автором: 09 Апреля, 2011 - 00:09:43)

 
 Top
Alek
Отправлено: 09 Апреля, 2011 - 00:22:58
Post Id


Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Март 2011  
Откуда: Набережные Челны


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




PHP:
скопировать код в буфер обмена
  1.  
  2. ....
  3. $this->mail=$_POST['mail'];
  4. var_dump(filter_var("$this->mail", FILTER_VALIDATE_EMAIL));
  5. .....
  6.  

и увидите результат...

(Отредактировано автором: 09 Апреля, 2011 - 00:24:02)

 
 Top
Okula
Отправлено: 09 Апреля, 2011 - 00:55:34
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


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




Alek, я этой функции пока не очень доверяю. Всё зависит от того какая версия PHP на сервере. В версиях 5.2 были баги с этой функцией (на 5.3 вроде исправили), но у меня например на хосте 5.2 досихпор стоит.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB