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

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

Solutions Collecting From Web of "Как ограничить общий идентификатор электронной почты для регистрации на PHP?"

Поскольку вы не указали какую-либо дополнительную информацию о том, как адреса электронной почты определяются и / или вводятся в форму или нет, я предоставляю следующее с помощью 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 }