Как вручную включить группы пользователей в SMF форум с использованием PHP
Это руководство предполагает, что вы знакомы с моей должности: Как вручную включить пользователя в SMF форум с использованием PHP .
Я недавно столкнулся с проблемой перемещения 800 или около того групп из базы данных в форуме SMF. Я столкнулся с парой проблем при принятии двигаться, что я не охватывают в первую должность:
- Группа имена не были гарантированы их безопасность для посимвольно двигаться в базу данных SMF. Так какое-то имя функции изменения должны быть заняты.
- Полосы не имеют паролей. Таким образом, некоторые типа генерации паролей следует применять.
Шаги, которые я ходил по регистрации всех полос в форуме пошли немного похож на этот:
Откройте базу данных Band
каждого из них (Band) (
Создать пароль
Переименовать Band с "безопасной" имя
Хватай и получения информации, необходимой для вставки пользователей
Вставьте Band в smf_members
Отправить Band письмо с паролем
)
Информация, которую я были доступны из группы баз данных, что было бы полезно включить: название группы, bandEmail и bandWebsite
Вот функция генерации пароля я использовал (blatently взяты из totallyphp.co.uk ):
createRandomPassword функции () (
$ Символов = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((двойной) микропоры () * 1000000);
$ = 0;
$ Пройти = ";
а ($ я <= 7) (33; $ Пит = RAND ()% 33;
$ TMP = подстрока ($ символов, $ пит, 1);
$ = $ Пройти перевал. $ TMP;
$ Я + +;)
вернуть $ проходе;
)
Пароль, созданный здесь относительно слабо, но он был достаточно хорош для моих целей. Любая функция генерации паролей будет прекрасно работать здесь. Я выбрал это, потому что это будет легко для членов помните, если они решили не менять его.
Как это сделать:
/ / Первый подключиться к группе баз данных
$ Имя пользователя = "bandUsername";
Принимающей $ = "bandHost";
MyPassword $ = "bandPassword";
Имя_базы_данных $ = "bandDatabase";
("cannot connect to server"); mysql_connect ("$ хозяин", "$ Имя пользователя", "$ MyPassword"), или умереть "(" Не удается подключиться к серверу ");
("cannot select DB"); mysql_select_db ("$ имя_базы_данных") или умереть ("не может выбрать БД");
/ / Теперь взять все группы из базы данных
$ Диегу = "SELECT * FROM allBands";
$ Полос = mysql_query ($ запроса) или умереть ("Ошибка 2222b Config");
$ UserRows = mysql_num_rows ($ полос);
/ / Теперь давайте подключиться к SMF db
Принимающей $ = "smfhost" / / имя хоста
$ Имя пользователя = "smfuser / / имя пользователя Mysql
MyPassword $ = "smfpassword"; / / MySQL пароль
Имя_базы_данных $ = "smfdatabase" / / Имя базы данных
("cannot connect to server"); mysql_connect ("$ хозяин", "$ Имя пользователя", "$ MyPassword"), или умереть "(" Не удается подключиться к серверу ");
("cannot select DB"); mysql_select_db ("$ имя_базы_данных") или умереть ("не может выбрать БД");
/ / $ Vaild_chars будет массива разрешенных символов для имен пользователей. Я решил, чтобы только буквы и цифры. Есть и другие символы, которые можно использовать, что не повлечет за собой проблемы, но по стилю причин, почему я решил пойти с только буквы и цифры
Valid_chars $ = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
$ Valid_chars = взорвать ("", $ valid_chars);
/ / Теперь нам нужно организовать цикл по каждой зоне
){ для ($ I = 0, $ я <$ userRows, $ я + +) (
($bands)){ если ($ = mysql_fetch_assoc строки ($ полос)) (
/ / Извлечь группы информации
Экстракт ($ подряд);
/ / Создание пароля для группы
$ = RealPassword createRandomPassword ();
/ / Я выбираю повторить название группы и пароль, как часть моей отладки и поэтому я могу видеть функции как это работает
эхо ("$ <br/> название группы - $ realPassword");
NewBand $ = "";
/ / За каждую букву в название группы мы будем смотреть, чтобы увидеть, если он соответствует допустимым символом от $ valid_chars. Это не мы собираемся избавиться от него и обрезает название группы
($bandName); $j ++ ){ для ($ J = 0, $ J <StrLen ($ название группы); $ J + +) (($band[$j])); Темп $ = str_replace ($ valid_chars, "X", strtolower ($ группы [$ J]));
если ($ Темп == "X")$ = $ NewBand newBand. $ Полосы [$ J];
)
/ / Я присоединяюсь к новым названием по той же причине я поддерживаю старые имя и пароль
эхо ("- $ newBand");
/ / У нас новое название группы .... Теперь давайте начнем buliding информации нужно вставить в БД ...
$ = $ ТетЬегЫате newBand;
$ = $ RealName newBand; / / I установить реальное имя и имя пользователя то же самое. Полос может измениться, если они хотят
$ = $ EmailAddress bandEmail;
$ = $ WebsiteUrl bandWebsite / / Поскольку у меня полос 'сайты могут также ввести их
$ = $ WebsiteTitle newBand;
Is_activated $ = 1;
ID_POST_GROUP $ = 4;
($memberName).$realPassword); //Password must be encrypted $ Пароль = SHA1 (strtolower ($ тетЬегЫате). RealPassword $) / / Пароль должен быть зашифрован/ / Убедитесь, что не является членом их с тем же именем в базе SMF. Мы не хотим, чтобы кто-нибудь случайно ввести в два раза
$ Диегу = "SELECT * FROM smf_members ГДЕ тетЬегЫате" = '$ тетЬегЫате;
("Config Error 2222343242b"); $ Результат = mysql_query ($ запроса) или умереть ("Ошибка 2222343242b Config");
$ Nrows = mysql_num_rows ($ результат);/ / Если имя пользователя найдено ничего не делать
если ($ nrows> 0) ()зе (
/ / Если пользователь еще не зарегистрировались на форуме, сделать это, и отправить по электронной почте ....
$ Диегу = "INSERT INTO smf_members (тетЬегЫате, реальное имя, EmailAddress, is_activated, ID_POST_GROUP, пароль, websiteUrl, websiteTitle) VALUES ('$ тетЬегЫате', '$ реальное имя', '$ EmailAddress', '$ is_activated', '$ ID_POST_GROUP' , '$ пароль', '$ websiteUrl', '$ websiteTitle ");("Config Error 2232 "); $ Результат = mysql_query ($ запроса) или умереть ("Config Ошибка 2232");
/ / Теперь мы должны направить группу по электронной почте
$ В = $ EmailAddress;
$ Вопросу = "Ваше имя пользователя и пароль форума";/ / От
$ Заголовок = ": В <me@mysite.com> Me";/ / Ваше сообщение
$ Теззаде .= "Логин и пароль, перечислены ниже. Вы можете либо изменить в любое время. Если вы не хотите участвовать в наших форумах, это не проблема. Просто никогда не войти, и он будет как будто ничего не произошло. \ з \ п ";
$ Теззаде .= "Имя пользователя: $ тетЬегЫате Пароль: $ realPassword \ г \ п";/ / Написать письмо
$ = Черновики почты ($ к, $ вопросу, $ теззаде, $ заголовка);
если ($ черновики)эхо ("- ДА!");
/ / Это последняя часть нашей эхо. "Да!" только будет напечатан, если письмо будет отправлено. Таким образом, полный ассортимент распечатка будет выглядеть следующим образом:
/ / Адам Борьба - 4s6vsxag - AdamStrife - ДА!)
)
)








































