У меня есть регистрационная форма, которая использует любые электронные письма для регистрации. Я хочу ограничить это только почтовым идентификатором компании. Другими словами, ни один бесплатный почтовый идентификатор поставщика услуг электронной почты не будет работать для регистрации.
Поскольку вы не предоставили никакой дополнительной информации о том, как адреса электронной почты определяются и / или вводятся в форму, или нет, я отправляю следующую информацию с использованием 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))
который дал те же результаты.
Как насчет белого / черного списка доменов, подобных следующему:
$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
}