Как ограничить общедоступный электронный идентификатор для регистрации в PHP?

У меня есть регистрационная форма, которая использует любые электронные письма для регистрации. Я хочу ограничить это только почтовым идентификатором компании. Другими словами, ни один бесплатный почтовый идентификатор поставщика услуг электронной почты не будет работать для регистрации.

0

Решение

Поскольку вы не предоставили никакой дополнительной информации о том, как адреса электронной почты определяются и / или вводятся в форму, или нет, я отправляю следующую информацию с использованием PHP. preg_match() функция, наряду с b а также i разделители шаблонов и массив.

b — граница слова
i — без учета регистра

Следующее будет соответствовать «gmail» или «Gmail» и т. Д., Если кто-то захочет обмануть систему.

В том числе Hotmail, Yahoo. Вы можете добавить в массив.

<?php
$_POST['email'] = "[email protected]";
$data = $_POST['email'];

if(preg_match("/\b(hotmail|gmail|yahoo)\b/i", $data)){
echo " Found free Email service.";
exit;
}

else{
echo "No match found for free Email service.";
exit;
}

На самом деле, вы можете использовать:

if(preg_match("/(hotmail|gmail|yahoo)/i", $data))

вместо:

if(preg_match("/\b(hotmail|gmail|yahoo)\b/i", $data))

который дал те же результаты.

1

Другие решения

Как насчет белого / черного списка доменов, подобных следующему:

$domainWhitelist = ['companydomain.org', 'companydomain.com'];
$domainBlacklist = ['gmail.com', 'hotmail.com'];
$domain = array_pop(explode('@', $email));

//white list
if(in_array($domain, $domainWhitelist)) {
//allowed
}

//black list
if(!in_array($domain, $domainBlacklist)) {
//allowed
}
1

По вопросам рекламы [email protected]