По общему признанию странный макрос, представленный ниже, является полезной заменой для устранения нескольких классов уязвимостей безопасности, а также для отладки помощи, поскольку доступ к свободным () 'd-областям с большей вероятностью приведет к сбою, чем к тихому повреждению памяти. 111]
#define my_free(x) do { free(x); x = NULL; } while (0)
Цикл do-while помогает окружающему коду легче переваривать множественные операторы. например если (сделано) my_free (x);
Если вы хотите проверить, есть ли в домене почтовый обменник, вы можете использовать что-то вроде этого:
/*checks if email is well formed and optionally the existence of a MX at that domain*/
function checkEmail($email, $domainCheck = false)
{
if (preg_match('/^[a-zA-Z0-9\._-]+\@(\[?)[a-zA-Z0-9\-\.]+'.
'\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/', $email)) {
if ($domainCheck && function_exists('checkdnsrr')) {
list (, $domain) = explode('@', $email);
if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
return true;
}
return false;
}
return true;
}
return false;
}
Использование:
$validated = checkEmail('foo@gmail.com', true);
Вот то, что, я думаю, вы ищете. Он выполняет проверку с помощью SMTP-сервера. Он показывает код PHP. http://www.webdigi.co.uk/blog/2009/how-to-check-if-an-email-address-exists-without-sending-an-email/ .
Вот такой код , взятый из модуля drupal email_verify . Там есть пара специальных вызовов Drupal, но не потребуется много времени, чтобы очистить его для общей функции PHP:
Также обратите внимание, что некоторые веб-хосты блокируют исходящий порт 25, поскольку он в основном используется спамерами . Если ваш хост практикует такую блокировку, вы не сможете использовать эту форму проверки.