У меня есть регистрационная форма, в которой для регистрации используются любые электронные письма. Я хочу ограничить его только идентификатором электронной почты компании. Другими словами, никакой почтовый идентификатор бесплатного почтового сервиса не будет работать для регистрации.
Поскольку вы не указали какую-либо дополнительную информацию о том, как адреса электронной почты определяются и / или вводятся в форму или нет, я предоставляю следующее с помощью preg_match()
PHP, а также разделителей шаблонов b
и i
и массива.
b
– граница слова
i
– нечувствительный к регистру
Следующее будет соответствовать «gmail» или «Gmail» и т. Д., Если кто-то захочет обмануть систему.
Включая Hotmail, Yahoo. Вы можете добавить в массив.
<?php $_POST['email'] = "email@Gmail.com"; $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 }