Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Braine
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 1
1

Ошибка:Ваш E-Mail адрес указан неправильно, попробуйте ещё раз

30.09.2012, 16:15. Просмотров 1957. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста, не могу понять в чем ошибка? (При вводе любого мейла выдает такую ошибку)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
    <?php
    function tep_validate_email($email) {
    $valid_address = true;
 
    $mail_pat = '/^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]/i';
    $valid_chars = '/[^] \(\)<>@,;:\.\\\"\[]/i';
    $atom = '/$valid_chars+/i';
    $quoted_user='/(\"[^\"]*\")/i';
    $word = '/($atom|$quoted_user)/i';
    $user_pat = '/^$word(\.$word)*$/i';
    $ip_domain_pat='/^\[([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\]$/i';
    $domain_pat = "/^$atom(\.$atom)*$/i";
 
    if (preg_match($mail_pat, $email, $components)) {
      $user = $components[1];
      $domain = $components[2];
      // validate user
      if (preg_match($user_pat, $user)) {
        // validate domain
        if (preg_match($ip_domain_pat, $domain, $ip_components)) {
          // this is an IP address
          for ($i=1;$i<=4;$i++) {
            if ($ip_components[$i] > 255) {
              $valid_address = false;
              break;
            }
          }
        }
        else {
          // Domain is a name, not an IP
          if (preg_match($domain_pat, $domain)) {
            /* domain name seems valid, but now make sure that it ends in a valid TLD or ccTLD
               and that there's a hostname preceding the domain or country. */
            $domain_components = explode(".", $domain);
            // Make sure there's a host name preceding the domain.
            if (sizeof($domain_components) < 2) {
              $valid_address = false;
            } else {
              $top_level_domain = strtolower($domain_components[sizeof($domain_components)-1]);
              // Allow all 2-letter TLDs (ccTLDs)
              if (preg_match('/^[a-z][a-z]$/i', $top_level_domain) != 1) {
                $tld_pattern = '';
                // Get authorized TLDs from text file
                $tlds = file(DIR_WS_INCLUDES . 'tld.txt');
                while (list(,$line) = each($tlds)) {
                  // Get rid of comments
                  $words = explode('#', $line);
                  $tld = trim($words[0]);
                  // TLDs should be 3 letters or more
                  if (preg_match('/^[a-z]{3,}$/i', $tld) == 1) {
                    $tld_pattern .= '^' . $tld . '$|';
                  }
                }
                // Remove last '|'
                $tld_pattern = substr($tld_pattern, 0, -1);
                if (preg_match("/$tld_pattern/i", $top_level_domain) == 0) {
                    $valid_address = false;
                }
              }
            }
          }
          else {
            $valid_address = false;
          }
        }
      }
      else {
        $valid_address = false;
      }
    }
    else {
      $valid_address = false;
    }
    if ($valid_address && ENTRY_EMAIL_ADDRESS_CHECK == 'true') {
      if (!checkdnsrr($domain, "MX") && !checkdnsrr($domain, "A")) {
        $valid_address = false;
      }
    }
    return $valid_address;
  }
?>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2012, 16:15
Ответы с готовыми решениями:

Проверьте, верно ли написан адрес, или попробуйте найти сайт.
Только начал учится хпх и тут опа не выводятся ошибки. просто если я допустил...

Ещё раз о регистрации, куках, и бд
Приветствую! Понимаю, что тема эта избита, но слишком избита, чтобы не...

вызов этого скрипта ещё раз
Подскажите пожалуйста как сделать Есть скрипт PHP, мне надо в конце добавить...

Неправильно работает функция mail
Здравствуйте, пытаюсь отправить письмо с помощью функции mail - ошибок...

CPanel mail() поменять адрес отправителя
Доброго времени суток. У меня на сервере стоит cPanel Accelerated2. Не могу...

4
iLoveGoogle
17 / 17 / 2
Регистрация: 27.09.2011
Сообщений: 154
01.10.2012, 00:53 2
Послушай дружище как я понимаю ты слишком замутил с проверкой названия почты на ошибку.
Вот тебя конкретная функция которая выдаст false в случае не нормального названия почты или true в обратном случае .
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function check_email_address($email)
{
  if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
    return false;
  }
  $email_array = explode("@", $email);
  $local_array = explode(".", $email_array[0]);
  for ($i = 0; $i < sizeof($local_array); $i++) {
    if
(!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&
в†Є'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",
$local_array[$i])) {
      return false;
    }
  }
  if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
    $domain_array = explode(".", $email_array[1]);
    if (sizeof($domain_array) < 2) {
        return false; // Not enough parts to domain
    }
    for ($i = 0; $i < sizeof($domain_array); $i++) {
      if
(!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|
в†Є([A-Za-z0-9]+))$",
$domain_array[$i])) {
        return false;
      }
    }
  }
  return true;
}
Насколько я помню эта функция на одном из англоязычных сайтов стала победительницей по надежной и короткой проверки эл-почты
Удачи тебе
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16755 / 6646 / 865
Регистрация: 12.06.2012
Сообщений: 19,897
Завершенные тесты: 1
01.10.2012, 09:31 3
iLoveGoogle, ereg уже устарела и отключена в php 5.3... Используйте вместо нее preg_match, к тому же она быстрее
0
iLoveGoogle
17 / 17 / 2
Регистрация: 27.09.2011
Сообщений: 154
01.10.2012, 12:31 4
Да KOPOJI, все верно
Вот preg_match версия этой функции.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function check_email_address($email)
{
  if (!preg_match("/^[^@]{1,64}@[^@]{1,255}$/", $email)) {
    return false;
  }
  $email_array = explode("@", $email);
  $local_array = explode(".", $email_array[0]);
  for ($i = 0; $i < sizeof($local_array); $i++) {
    if
(!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&
в†Є'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/",
$local_array[$i])) {
      return false;
    }
  }
  if (!preg_match("/^\[?[0-9\.]+\]?$/", $email_array[1])) {
    $domain_array = explode(".", $email_array[1]);
    if (sizeof($domain_array) < 2) {
        return false; // Not enough parts to domain
    }
    for ($i = 0; $i < sizeof($domain_array); $i++) {
      if
(!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|
в†Є([A-Za-z0-9]+))$/",
$domain_array[$i])) {
        return false;
      }
    }
  }
  return true;
}
0
crautcher
2019 / 1991 / 463
Регистрация: 27.05.2011
Сообщений: 6,837
01.10.2012, 13:34 5
в пхп есть готовая проверка :
PHP
1
filter_var($email, FILTER_VALIDATE_EMAIL)
0
01.10.2012, 13:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 13:34

Неправильно выводит некоторые символы через mail()
Когда я отправляю письмо, то некоторые символы в тексте письма, такие как Я, Д...

Ещё раз про ввод/вывод (failed to create stream: Permission denied in c:inetpubwwwroot)
Г-да. У меня есть связка PHP и IIS. Я пытаюсь сделать такую банальную вроде...

Написать программу, которая выводит на экран ваш адрес 10 раз
Написать программу, которая выводит на экран ваш адрес 10 раз


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru