Я пытаюсь ограничить отправку формы для конкретных почтовых доменов под html / php. В принципе, я не хочу, чтобы какой-либо пользователь регистрировался по определенным доменам электронной почты.
Например, все домены электронной почты будут в порядке, за исключением ниже;
@deny.com @reject.net @spam.org
Как я могу достичь такого поведения с помощью jQuery, регулярного выражения или лучшего способа сделать это?
Заранее спасибо,
Вы можете использовать Javascript / Jquery для достижения этого. Сделайте функцию для проверки электронной почты
var rejectList = [ "deny.com" , "reject.net" ]; function validateEmailField() { var emailValue = $('#email-input').val(); // To Get Value (can use getElementById) var splitArray = emailValue.split('@'); // To Get Array if(rejectList.indexOf(splitArray[1]) >= 0) { // Means it has the rejected domains return false; } return true; }
Поэтому перед отправкой формы выполните эту функцию и проверьте значение.
Вы можете достичь того же через атрибут входного тега HTML5 (шаблон). Скажем, например, ваш домен является foo.com, тогда код будет:
<input id="email" type="email" pattern="[az.]*[@]\bfoo.com" required>
Также вы можете изменить сообщение об ошибке, используя setCustomValidity элемента DOM.
document.getElementById('email').setCustomValidity("Please use an @foo.com email address.");
Если вы хотите выполнить проверку на сервере, вы можете использовать этот скрипт, иначе вы можете сделать такую же проверку, используя jquery или javascript
$denied = array("deny.com","reject.net","spam.org"); function getDomainFromEmail($email) { // Get the data after the @ $domain = substr(strrchr($email, "@"), 1); return $domain; } $email = 'the_username_here@deny.com'; $domain = getDomainFromEmail($email); echo $domain; if (in_array($domain, $denied)) { //denied user alert echo "denied"; } else { //valid user echo "valid"; }