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






















