Я прошу адрес электронной почты через форму на моем сайте. Я хочу проверить домен, чтобы предотвратить фальшивые записи, которые я получаю прямо сейчас. Я использую следующий код, но он не работает:
function myCheckDNSRR($hostName, $recType = '')
{
if(!empty($hostName)) {
if( $recType == '' ) $recType = "MX";
exec("nslookup -type=$recType $hostName", $result);
// check each line to find the one that starts with the host
// name. If it exists then the function succeeded.
foreach ($result as $line) {
if(eregi("^$hostName",$line)) {
echo "valid email";
}
}
// otherwise there was no mail handler for the domain
echo "invalid email";
}
echo "invalid EMAIL";
}
Я новичок в этом и использовал этот код из Вот
Пожалуйста, ведите меня. Благодарю.
Я думаю, вы можете просто пинговать так.
function myCheckDNSRR($email_address)
{
if(!empty($email_address)) {
$hostName=strstr($email_address, '@');
$hostName=str_replace("@","www.",$hostName);
exec("ping " . $hostName, $output, $result);
if ($result == 0){
echo "valid email";
}
else{
echo "invalid email";
}
}
}
называть это как
echo myCheckDNSRR("sample@gmail.com");
Используйте валидационную библиотеку, например https://docs.zendframework.com/zend-validator/validators/email-address/
$validator = new Zend\Validator\EmailAddress();
if ($validator->isValid($email)) {
// email appears to be valid
} else {
// email is invalid; print the reasons
foreach ($validator->getMessages() as $message) {
echo "$message\n";
}
}
Создайте таблицу в своей БД для хранения кода ссылки электронной почты. Когда кто-то регистрируется, пометьте пользователя как неактивированного, пока он не нажмет на ссылку в электронном письме. Таким образом, вы знаете, что это реально, и можете активировать пользователя.