Перейти к содержимому


Изменения проверки E-mail при регистрации

Проверка E-mail Проверка формы регистрации

  • Вы не можете ответить в тему
Сообщений в теме: 4

#1 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 24 November 2015 - 08:50 PM

Уважаемые форумчане, всем привет. Столкнулся здесь с одним казусом интересным. Итак. Вот человеку надо указать емейл для регистрации. И допустим у этого человека домен заканчивается на .pro. Система не дает никак это дело провести как нормальное. Ругается. Подскажите, где это дело правится.

Сразу бегу наперед. Я пробовал ковырять core/funstions/functions.php, нашел там preg_match соответствующий, и даже добавил туда pro! Но толку ноль. Наверное не там копаю. Буду благодарен за помощь. Спасибо.
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 25 November 2015 - 12:08 AM

Функция regVerifyContactInfo в registration_functions.php.
А вообще давно пора заменить этот ужас с регулярным выражением на штатную PHP-функцию валидации емейла - https://php.net/manu....filter-var.php
На момент написания ShopCMS этой функции еше просто не было :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 Robby

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 162 сообщений
Репутация: 75
Продвинутый

Отправлено 30 November 2015 - 11:25 PM

Вот исправленная функция, файл registration_functions.php:
function regVerifyContactInfo( $login, $cust_password1, $cust_password2,
$Email, $first_name, $last_name, $subscribed4news,
$additional_field_values )
{
$error = "";
if (
!_testStrArrayInvalidSymbol(
array( $login, $cust_password1, $cust_password2 )
)
)
$error = ERROR_INVALID_SYMBOL_LOGIN_INFO;
else
if ( trim($login) == "" ) $error = ERROR_INPUT_LOGIN;
else
# Fix проверки логина: только английские буквы в любом регистре. Для цифр, английских букв и знака подчеркивания используем '/^[a-z0-9_]/i'
//if (!(((ord($login)>=ord("a")) && (ord($login)<=ord("z"))) || ((ord($login)>=ord("A")) && (ord($login)<=ord("Z")))))
if (preg_match('/^[a-z]/i', $login) == 0)
$error = ERROR_LOGIN_SHOULD_START_WITH_LATIN_SYMBOL;
else
if ( $cust_password1 == "" || $cust_password2 == "" || $cust_password1 != $cust_password2 )
$error = ERROR_WRONG_PASSWORD_CONFIRMATION;
else
if ( trim($first_name) == "" ) $error = ERROR_INPUT_NAME;
else
if ( trim($last_name) == "" ) $error = ERROR_INPUT_NAME;
else
if ( trim($Email) == "" ) $error = ERROR_INPUT_EMAIL;
# Fix проверки e-mail
//else if (!preg_match("/^[_\.a-z0-9-]{1,20}@(([a-z0-9-]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/is",$Email))
else if (filter_var($Email, FILTER_VALIDATE_EMAIL) === false)
{ //e-mail validation
$error = ERROR_INPUT_EMAIL;
}
if (isset($_POST['affiliationLogin']))
if ( !regIsRegister($_POST['affiliationLogin']) && $_POST['affiliationLogin'])
$error = ERROR_WRONG_AFFILIATION;
foreach( $additional_field_values as $key => $val )
{
if ( !_testStrInvalidSymbol($val["additional_field"]) )
return ERROR_INVALID_SYMBOL;
if ( trim($val["additional_field"]) == "" && GetIsRequiredRegField($key) == 1 )
{
$error = ERROR_INPUT_ADDITION_FIELD;
break;
}
}
return $error;
}

  • 2

#4 Cruelten

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 48 сообщений
Репутация: 1
Начинающий

Отправлено 04 December 2015 - 10:10 PM

Спасибо всем огромное за помощь.
  • 0

#5 SoVA

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 66 сообщений
Репутация: 0
Начинающий
  • ГородКраснодар

Отправлено 11 December 2015 - 08:44 PM

Robby, спасибо, тоже себе исправил: не проходил регистрацию пользователь с ящиком на mail.ru, но длинным именем пользователя zhenya-***********-**@mail.ru
Попробовал даже зарегать в магазине пользователя со своим адресом e-mail, а после в контактах пользователя изменить адрес: не прокатило. После правки функции адрес удалось изменить.
  • 0
Make love, not work!