У меня есть эта строка кода, которую я хочу применить к странице входа.Я хочу ограничить вход в систему только для пользователя с определенным доменным именем, например, "@ mycompany.com". Ни один другой пользователь не может зарегистрироваться без этого домена.
Но проблема в том, что я не могу заставить его работать,он пропускает все домены, которые я пробовал, и не возвращает ложь
Коды копируются и вставляются из двух разных подделок, один из которых не имеет правил для доменов, а второй - с правилами для доменов с ограниченным доступом (из строки "// проверить tld "), который я вставил и отредактировал.Где это идет не так, в настоящее время я не могу видеть, где?
public static function validateUserEmail($user_email, $user_email_repeat)
{
if (empty($user_email)) {
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_FIELD_EMPTY'));
return false;
}
if ($user_email !== $user_email_repeat)
{
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_REPEAT_WRONG'));
return false;
}
// validate the email with PHP's internal filter
// side-fact: Max length seems to be 254 chars
// @see /282823/kakova-maksimalnaya-dlina-deistvuyschego-adresa-elektronnoi-pochty
if (!filter_var($user_email, FILTER_VALIDATE_EMAIL)) {
//validate tld
$validTlds = str_replace(".", "\.", VALID_EMAIL_TLDS);
$validTlds = "\.".str_replace(",", "|\.", $validTlds);
//$validTlds = str_replace(",", "|\.", $validTlds);
$emailArr = explode("@", $user_email);
$emailTld = $emailArr[1];
if ($emailTld !== 'mycompany.com')
{
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_DOES_NOT_FIT_DOMAIN'));
return false;
}
if (!preg_match('/^[-a-z0-9]+('.$validTlds.')\z/', strtolower($emailTld))) {
//check main domain here
$exValidTlds = explode(",", VALID_EMAIL_TLDS);
$exValidTlds = array_map('trim', $exValidTlds);
foreach($exValidTlds as $tld) {//if exist then
if(!strstr($emailTld, ".".$tld)) {
if($tld !== strrchr($emailTld, $tld)) {
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_DOES_NOT_FIT_PATTERN'));
return false;
}
}
}
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_DOES_NOT_FIT_PATTERN'));
return false;
}
}
return true;
}
Это оригинальный код, с которого я начал, и проверка домена, который я добавил позже.Весь этот код домена валидации, похоже, игнорируется ...
public static function validateUserEmail($user_email, $user_email_repeat)
{
if (empty($user_email)) {
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_FIELD_EMPTY'));
return false;
}
if ($user_email !== $user_email_repeat) {
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_REPEAT_WRONG'));
return false;
}
// validate the email with PHP's internal filter
// side-fact: Max length seems to be 254 chars
// @see /282823/kakova-maksimalnaya-dlina-deistvuyschego-adresa-elektronnoi-pochty
if (!filter_var($user_email, FILTER_VALIDATE_EMAIL)) {
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_DOES_NOT_FIT_PATTERN'));
return false;
}
return true;
}
РЕДАКТИРОВАТЬ ...
Я наконец-то заставил его работать, и вот как это покаэто работает для меня ... Цель состоит в том, чтобы я не хотел, чтобы другие люди за пределами организации могли входить на веб-сайт.
if (filter_var($user_email, FILTER_VALIDATE_EMAIL)) {
$server = strstr($user_email, '@');
if ($server !== '@mycompany.com') {
Session::add('feedback_negative', Text::get('FEEDBACK_EMAIL_DOES_NOT_FIT_PATTERN'));
return false;
}
}