Итак, можете меня поздравить, я исправил ошибку! Она была чисто логической. Перенёс x++ в другое место, и всё заработало)
Благодарю за участие и подсказки!
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{
# Если юзера удалось зарегистрировать, останавливаем перебор
Вот функция regOrg, ничего экстраординарного - только лишь формирование get-запроса и его отправка на сервер. Отдаёт функция массив, в котором [code] - число, все значения которого, кроме 1, по документации означают, что регистрация не удалась.
А вот функция checkOrg, она аналогично отправляет запрос на сервер и возвращает ответ, все значения которого, кроме 1, означают фэйл. Однако она, если ответ [code]==1, останавливает цикл на текущей итерации, и не повторяется, в отличие от regOrg:
Друзья, я столкнулся с неожиданной, и, пожалуй, довольно ламерской проблемой.
У меня есть скрипт, который регистрирует юзеров в партнёрской системе. Все логины в этой системе уникальны, то есть у разных партнёров не могут повторяться.
Мой скрипт генерирует логин автоматически.
Сперва скрипт пытается зарегистрировать сгенерированный на основе определённых(уникальных) данных логин. Если регистрация получается, то ок, а если нет, то за дело берётся функция 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{
# Если юзера удалось зарегистрировать, останавливаем перебор
Друзья, я столкнулся с неожиданной, и, пожалуй, довольно ламерской проблемой.
У меня есть скрипт, который регистрирует юзеров в партнёрской системе. Все логины в этой системе уникальны, то есть у разных партнёров не могут повторяться.
Мой скрипт генерирует логин автоматически.
Сперва скрипт пытается зарегистрировать сгенерированный на основе определённых данных логин. Если регистрация получается, то ок, а если нет, то за дело берётся функция tryRegister, которая перебирает логины и пытается их регистрировать.
В этой функции сперва я проверяю в цикле функцией checkOrg, есть ли такой логин среди моих клиентов, если есть - то регистрировать не нужно.
Если нет, тогда я добавляю к логину одну букву и пытаюсь его зарегистрировать функцией regOrg, пока не кончится строка, из которой берётся буква, или пока не получится успешная регистрация. Листинг функции прилагается.
Проблема в том, что функция regOrg в цикле исполняется дважды, то есть получается две регистрации.
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{
# Если юзера удалось зарегистрировать, останавливаем перебор
Проблема этого кода в том, что он неправильно работает с кодировкой utf-8, если символы отличаются от латиницы, и исходит эта проблема из-за того, что с многобайтными символами функция substr работать не умеет. Заменяю её на mb_substr:
Остаётся одна проблема: слова обрезаются посередине, получается ерунда вроде "Слова обрезаются посе...". Подскажите, какие функции можно применить, чтобы текст обрезался правильно: "Слова обрезаются посередине...".