Come inserire manualmente un gruppo di utenti in un forum SMF Utilizzo di PHP
Questo tutorial presuppone che è familiare con il mio post: Come Inserire un manuale utente in un forum SMF Utilizzo di PHP.
Recentemente ho dovuto affrontare la sfida di passare in modo bande 800 o da un database in un forum SMF. Ho affrontato un paio di problemi al momento di formulare la mossa che non mi riguardano in primo post:
- La band nomi non sono stati garantiti per essere sicuro per un carattere per carattere spostare in SMF database. Quindi una sorta di funzione di modificare il nome doveva essere impiegato.
- Le bande non hanno password. Quindi un certo tipo di generazione di password deve essere impiegato.
I passi sono andato per la registrazione di tutte le bande nel forum è andato un po 'come questo:
Aprire il database Band
per ogni (Band) (
Genera Password
Rinomina Band con "sicuro" nome
Afferrare e generare le informazioni necessarie per inserire l'utente
Inserisci Band in smf_members
Banda Invia una e-mail con la password
)
Le informazioni che avevo a disposizione dalla banca dati che la band è stata utile inclusi: bandName, bandEmail, e bandWebsite
Ecco la funzione di generazione di password che ho usato (blatently prese da totallyphp.co.uk):
createRandomPassword funzione () (
$ chars = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1000000);
$ i = 0;
$ pass = ";
while ($ i <= 7) (33; $ num = rand ()% 33;
$ tmp = substr ($ chars, $ num, 1);
$ pass = $ pass. $ tmp;
$ i + +;)
return $ pass;
)
La password creata qui è relativamente debole, ma è stato abbastanza buono per i miei scopi. Qualsiasi password funzione di generazione di lavorare bene qui. Ho scelto questo, perché sarebbe stato facile per i membri di ricordare se ha scelto di non modificare.
Come fare:
/ / In primo luogo la connessione a banda database
$ username = "bandUsername";
$ host = "bandHost";
miapassword $ = "bandPassword";
$ db_name = "bandDatabase";
("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ miapassword") or die ( "non può connettersi al server");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "non può selezionare DB");
/ / Ora afferrare tutte le bande dal database
$ query = "SELECT * FROM allBands";
$ bande = mysql_query ($ query) or die ( "Errore di configurazione 2222b");
$ userRows = mysql_num_rows ($ bande);
/ / Ora consente la connessione a smf db
$ host = "smfhost"; / / Nome host
$ username = "smfuser; / / MySQL username
miapassword $ = "smfpassword"; / / MySQL password
$ db_name = "smfdatabase"; / / nome del database
("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ miapassword") or die ( "non può connettersi al server");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "non può selezionare DB");
/ / $ vaild_chars sarà consentito l'array di caratteri per i nomi utente. Ho deciso di consentire solo lettere e numeri. Ci sono altri personaggi che potrebbero essere utilizzati, che non causa un problema, ma per ragioni di stile, ho deciso di andare con solo lettere e numeri
valid_chars $ = "abcdefghijklmnopqrstu VWXYZ 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = explode ( "", $ valid_chars);
/ / Ora abbiamo bisogno di loop attraverso ciascuna banda
){ for ($ i = 0; $ i <$ userRows; $ i + +) (
($bands)){ if ($ row = mysql_fetch_assoc ($ bande)) (
/ / Estrarre la band informazioni
estratto ($ row);
/ / Creazione di una password per la banda
$ realPassword = createRandomPassword ();
/ / Ho scelto di eco il bandname e la password come parte della mia e di debug in modo che io possa vedere la funzione come funziona
echo ( "<br/> bandName $ - $ realPassword");
newBand $ = "";
/ / Per ogni lettera nella banda nome daremo un'occhiata per vedere se corrisponde a un carattere valido a partire da $ valid_chars. E non stiamo andando a sbarazzarsi di esso e troncare il nome della band
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandName); $ j + +) (($band[$j])); $ temp = str_replace ($ valid_chars, "X", strtolower ($ banda [$ j]));
if ($ temp == "X")newBand $ = $ newBand. $ banda [$ j];
)
/ / I eco il nuovo nome per lo stesso motivo mi associo il vecchio nome e la password
echo ( "- $ newBand");
/ / Abbiamo il nuovo nome del gruppo musicale .... ora cominciamo buliding le informazioni abbiamo bisogno di inserire nel db ...
memberName $ = $ newBand;
$ realname = $ newBand; / / impostare il vero nome e lo stesso nome utente. Le bande si può cambiare, se vogliono
$ = $ EmailAddress bandEmail;
websiteUrl $ = $ bandWebsite; / / Dal momento che ho le bande 'siti web potrebbe anche entrare li
websiteTitle $ = $ newBand;
is_activated = $ 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ password = sha1 (strtolower ($ memberName). $ realPassword); / / La password deve essere codificato/ / Assicurarsi che la loro non è un membro con lo stesso nome del database di SMF. Noi non vogliamo entrare chiunque accidentalmente due volte
$ query = "SELECT * FROM smf_members DOVE memberName = '$ memberName'";
("Config Error 2222343242b"); $ risultato = mysql_query ($ query) or die ( "Errore di configurazione 2222343242b");
$ nRows = mysql_num_rows ($ result);/ / Se il nome utente non si trova nulla
if ($ nRows> 0) ()else (
/ / Se l'utente non è già firmato per il forum, e fare in modo di inviare un e-mail ....
$ query = "INSERT INTO smf_members (memberName, realname, EmailAddress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ( '$ memberName', '$ realname', '$ EmailAddress',' $ is_activated ',' $ ID_POST_GROUP ' , '$ password', '$ websiteUrl', '$ websiteTitle') ";("Config Error 2232 "); $ risultato = mysql_query ($ query) or die ( "Errore di configurazione 2232");
/ / Ora abbiamo bisogno di banda per inviare una e-mail
$ a = $ EmailAddress;
$ subject = "Il tuo forum di nome utente e la password";/ / Da
$ header = "a partire da: <me@mysite.com> Me";/ / Il tuo messaggio
$ messaggio .= "Il tuo nome utente e password sono elencati di seguito. È possibile modificare in qualsiasi momento sia. Se non si desidera partecipare al nostro forum, che non è problema. Just mai il log in e sarà come sempre è accaduto nulla . \ r \ n ";
$ messaggio .= "Nome: $ memberName Password: $ realPassword \ r \ n";/ / Inviare e-mail
$ sentmail = mail ($ a, $ oggetto, $ messaggio, $ header);
if ($ sentmail)echo ( "- Sì!");
/ / Questa è l'ultima parte del nostro eco. Il "SI!" solo essere stampati, se viene inviata una e-mail. Dunque, una linea completa di stampa avrà un aspetto simile a questo:
/ / Adam Strife - 4s6vsxag - AdamStrife - Sì!)
)
)






















