Друзья, я столкнулся с неожиданной, и, пожалуй, довольно ламерской проблемой.
У меня есть скрипт, который регистрирует юзеров в партнёрской системе. Все логины в этой системе уникальны, то есть у разных партнёров не могут повторяться.
Мой скрипт генерирует логин автоматически.
Сперва скрипт пытается зарегистрировать сгенерированный на основе определённых данных логин. Если регистрация получается, то ок, а если нет, то за дело берётся функция tryRegister, которая перебирает логины и пытается их регистрировать.
В этой функции сперва я проверяю в цикле функцией checkOrg, есть ли такой логин среди моих клиентов, если есть - то регистрировать не нужно.
Если нет, тогда я добавляю к логину одну букву и пытаюсь его зарегистрировать функцией regOrg, пока не кончится строка, из которой берётся буква, или пока не получится успешная регистрация. Листинг функции прилагается.
Проблема в том, что функция regOrg в цикле исполняется дважды, то есть получается две регистрации.
Что я сделал не так? Почему 2 раза?
PHP:
скопировать код в буфер обмена
function tryRegister ( $user_login, $user_password, $alphabet = "78abcdefghjkmnpqrstuvwxyz" ) { // Изменяем логин, перебором по алфавиту проверяем, не зарегистрирован ли он у нас, и если нет, пытаемся зарегистрировать, пока не зарегистрируем или не исчерпаем алфавит $x = 0; while ( $x < 25 ) { $firstletter = $alphabet{$x}; // первая буква генерируемого логина $user_login = $firstletter.$user_login; //прибавляем букву к логину, чтоб не повторялся # Если юзер зарегистрирован у меня, останавливаем перебор $checkOrgArray = checkOrg ( $user_login); // Выполняю проверку, если у меня есть такой юзер, чтобы не регистрировать повторно if ( $checkOrgArray['code'] == 1 ) { // Если юзер мой $status = 1; break; // Стоп перебор } else { # Если юзера удалось зарегистрировать, останавливаем перебор $regOrgArray = regOrg ($user_login, $user_password ); // Пытаемся зарегистрировать if ( $regOrgArray['code'] == 1 ) { // Если регистрация успешна, останавливаем, иначе продолжаем $status = 2; break; // Стоп перебор } } $x++; } return $status; }
(Отредактировано автором: 20 Ноября, 2015 - 19:47:11)
|