У меня есть скрипт, который регистрирует юзеров в партнёрской системе. Все логины в этой системе уникальны, то есть у разных партнёров не могут повторяться.
Мой скрипт генерирует логин автоматически.
Сперва скрипт пытается зарегистрировать сгенерированный на основе определённых(уникальных) данных логин. Если регистрация получается, то ок, а если нет, то за дело берётся функция tryRegister, которая перебирает логины и пытается их регистрировать.
В этой функции сперва я проверяю в цикле функцией checkOrg, есть ли такой логин среди моих клиентов, если есть - то регистрировать не нужно.
Если нет, тогда я добавляю к логину одну букву и пытаюсь его зарегистрировать функцией regOrg, пока не кончится строка, из которой берётся буква, или пока не получится успешная регистрация. Листинг функции прилагается.
Проблема в том, что функция regOrg в цикле исполняется дважды, то есть получается две регистрации. А должна исполниться лишь один раз - после успешной регистрации я останавливаю цикл.
Подскажите, пожалуйста, что я сделал не так? Почему 2 раза?
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;
}