Come inserire manualmente un gruppo di utenti in un forum SMF Utilizzo di PHP

Posted in SMF (Simple Machine Forum), php da ShortLikeAFox il 30 luglio, 2008

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:

  1. 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.
  2. 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ì!

)

)
)

Lascia un tuo commento