Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция в цикле выполняется дважды

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: вместо одного раза
StormMan
Отправлено: 20 Ноября, 2015 - 19:41:27
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




Друзья, я столкнулся с неожиданной, и, пожалуй, довольно ламерской проблемой.

У меня есть скрипт, который регистрирует юзеров в партнёрской системе. Все логины в этой системе уникальны, то есть у разных партнёров не могут повторяться.

Мой скрипт генерирует логин автоматически.
Сперва скрипт пытается зарегистрировать сгенерированный на основе определённых данных логин. Если регистрация получается, то ок, а если нет, то за дело берётся функция tryRegister, которая перебирает логины и пытается их регистрировать.

В этой функции сперва я проверяю в цикле функцией checkOrg, есть ли такой логин среди моих клиентов, если есть - то регистрировать не нужно.

Если нет, тогда я добавляю к логину одну букву и пытаюсь его зарегистрировать функцией regOrg, пока не кончится строка, из которой берётся буква, или пока не получится успешная регистрация. Листинг функции прилагается.

Проблема в том, что функция regOrg в цикле исполняется дважды, то есть получается две регистрации.

Что я сделал не так? Почему 2 раза?

PHP:
скопировать код в буфер обмена
  1. function tryRegister ( $user_login, $user_password, $alphabet = "78abcdefghjkmnpqrstuvwxyz" ) {
  2.         // Изменяем логин, перебором по алфавиту проверяем, не зарегистрирован ли он у нас, и если нет, пытаемся зарегистрировать, пока не зарегистрируем или не исчерпаем алфавит
  3.         $x = 0;
  4.         while ( $x < 25 ) {
  5.  
  6.                 $firstletter = $alphabet{$x}; // первая буква генерируемого логина
  7.                 $user_login = $firstletter.$user_login; //прибавляем букву к логину, чтоб не повторялся
  8.  
  9.                 # Если юзер зарегистрирован у меня, останавливаем перебор
  10.                 $checkOrgArray = checkOrg ( $user_login); // Выполняю проверку, если у меня есть такой юзер, чтобы не регистрировать повторно
  11.                 if ( $checkOrgArray['code'] == 1 ) { // Если юзер мой
  12.                         $status = 1;
  13.                         break; // Стоп перебор
  14.                 } else {
  15.                         # Если юзера удалось зарегистрировать, останавливаем перебор
  16.                         $regOrgArray = regOrg ($user_login, $user_password ); // Пытаемся зарегистрировать
  17.                         if ( $regOrgArray['code'] == 1 ) { // Если регистрация успешна, останавливаем, иначе продолжаем
  18.                                 $status = 2;
  19.                                 break; // Стоп перебор
  20.                         }
  21.                 }
  22.                
  23.                 $x++;
  24.         }
  25.  
  26.         return $status;
  27. }

(Отредактировано автором: 20 Ноября, 2015 - 19:47:11)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB