Kako se ručno Umetni grupu korisnika u SMF forum Koristeći PHP
Tutorial To pretpostavlja da su upoznati s mojim post: kako se ručno Umetni Korisničke u SMF Forum Koristeći PHP.
Nedavno sam suočena s izazovom kreće 800 ili tako bendova iz baze podataka u SMF forum. Ja suočio par problema prilikom premještanje da nisam pokriće u prvom post:
- Bend imena nisu jamstvo da će vam biti sigurno za znak po znak kretati u SMF database. Dakle nekakav naziv mijenjanja funkcije morali biti zaposleni.
- The bands nemate lozinke. Tako neki tip lozinka naraštaj mora biti zaposlen.
Koraci sam o da se registruju sve ove bendove na forumu ode malo ovako:
Otvorite Band Database
za svaku (Band) (
Generirajte Lozinka
Preimenuj Band sa "sigurnom" ime
Grab generirajte i informacije potrebne za umetanje korisnik
Umetni Band u smf_members
Band Pošalji poruku e-pošte s lozinku
)
Informacije sam imao na raspolaganju bazu podataka iz benda koji je bio koristan uključeno: bandName, bandEmail i bandWebsite
Ovdje je funkcija generiranje zaporke sam koristio (blatently preuzet iz totallyphp.co.uk):
createRandomPassword function () (
znakova $ = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1000000);
$ i = 0;
$ pass = ";
dok ($ i <= 7) (33; $ num = Rand ()% 33;
$ tmp = substr ($ znakova, $ num, 1);
$ pass = $ pass. $ tmp;
$ i + +;)
povratak $ pass;
)
Lozinka stvorio ovdje je relativno slab, ali je dovoljno dobar za moje potrebe. Bilo koja funkcija generiranje zaporke bi raditi fino ovdje. Sam izabrao ovaj neki, jer bi se lako za članove zapamtiti ako su izabrali da ne promijenite.
Kako ćete to učiniti:
/ / First spojiti na bazu benda
$ username = "bandUsername";
$ host = "bandHost";
MojaLozinka $ = "bandPassword";
$ db_name = "bandDatabase";
("cannot connect to server"); mysql_connect ( "host $", "$ username", "$ MojaLozinka") ili umrijeti ( "ne može spojiti na poslužitelj");
("cannot select DB"); mysql_select_db ( "$ db_name") ili die ( "ne mogu odabrati DB");
/ / Sada zgrabite sve od bendova iz baze podataka
$ query = "SELECT * FROM allBands";
$ bendova = mysql_query ($ query) or Die ( "Config 2222b Greška");
$ userRows = mysql_num_rows ($ bendova);
/ / Sada omogućuje spajanje na SMF db
$ host = "smfhost"; / / host name
$ username = "smfuser; / / mysql username
MojaLozinka $ = "smfpassword"; / / mysql password
$ db_name = "smfdatabase"; / / Database ime
("cannot connect to server"); mysql_connect ( "host $", "$ username", "$ MojaLozinka") ili umrijeti ( "ne može spojiti na poslužitelj");
("cannot select DB"); mysql_select_db ( "$ db_name") ili die ( "ne mogu odabrati DB");
/ / $ vaild_chars će biti niz znakova Dozvoljeno za korisnička imena. Sam odlučio dopustiti samo slova i brojeve. Postoje i druge znakove koji bi se mogla koristiti da ne bi uzrok problema, ali za stil razloga sam odlučio poći sa samo slova i brojeve
$ valid_chars = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = eksplodirati ( "", $ valid_chars);
/ / Sada trebamo petlju kroz svaki bend
){ for ($ i = 0; $ i <$ userRows; $ i + +) (
($bands)){ if ($ row = mysql_fetch_assoc ($ bendova)) (
/ / Izvuci benda informacije
extract ($ row);
/ / Create a password za bend
$ realPassword = createRandomPassword ();
/ / Echo sam odabrati da se bandname i lozinku kao dio moje debugging i tako da mogu vidjeti kako to radi funkcija
echo ( "$ <br/> bandName - $ realPassword");
newBand $ = "";
/ / Za svako slovo u imenu benda ćemo gledati da vidim ako odgovara važećim znakom od $ valid_chars. On to ne ćemo odstraniti ga i izrežite band name
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandName); $ j + +) (($band[$j])); $ temp = str_replace ($ valid_chars, "X", strtolower ($ band [$ j]));
if ($ temp == "X")newBand $ = $ newBand. bend $ [$ j];
)
/ / Echo sam novo ime za istog razloga sam odjek starih ime i lozinku
echo ( "- $ newBand");
/ / Mi smo novi band name .... Počnimo sada buliding informacije su nam potrebne za umetanje u db ...
memberName $ = $ newBand;
realname $ = $ newBand; / / set sam pravi naziv i član istog imena. The bands mogu promijeniti ako žele
emailAddress $ = $ bandEmail;
websiteUrl $ = $ bandWebsite; / / Od Imam bendova 'kao i web stranice mogu upisati ih
websiteTitle $ = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ password = sha1 (strtolower ($ memberName). $ realPassword); / / Zaporka mora biti šifriran/ / Pobrinite njihovu nije član s istim imenom u SMF database. Ne želimo ući itko slučajno dva puta
$ query = "SELECT * FROM smf_members GDJE memberName = '$ memberName'";
("Config Error 2222343242b"); $ rezultat = mysql_query ($ query) or Die ( "Config 2222343242b Greška");
$ nrows = mysql_num_rows ($ rezultat);/ / Ako je član ime je pronađeno ništa
if ($ nrows> 0) ()else (
/ / Ako korisnik nije već prijavio za forume, učinite to i poslati e-mail ....
$ query = "INSERT NA smf_members (memberName, realname, emailAddress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) vrijednosti ( '$ memberName', '$ realname', '$ emailAddress',' $ is_activated ',' $ ID_POST_GROUP ' , '$ password', '$ websiteUrl', '$ websiteTitle') ";("Config Error 2232 "); $ rezultat = mysql_query ($ query) or Die ( "Config Error 2232");
/ / Sada nam je potrebna za slanje e-pošte grupe
$ to = $ emailAddress;
$ subject = "Vaše korisničko ime i lozinku forum";/ / Od
$ header = "od: Me <me@mysite.com>";/ / Vaša poruka
$ poruka .= "Vaše korisničko ime i zaporka su navedene u nastavku. možete promijeniti bilo kada, bilo u. Ako ne želite sudjelovati u našim forumima, to je bez problema. Samo ne prijavite i da će ikada biti kao ništa dogodilo . \ r \ n ";
$ poruka .= "Korisničko ime: Lozinka memberName $: $ realPassword \ r \ n";/ / Slanje poruka e-pošte
$ poslanapošta = mail ($ to, $ subject, $ poruka, $ header);
if ($ poslanapošta)echo ( "- Da!");
/ / Ovo je zadnji dio našeg odjek. The "-DA!" samo će se tiskati ako se šalje e-poštu. Tako potpuni ispis linija izgledati će otprilike ovako:
/ / Adam svađu - 4s6vsxag - AdamStrife - DA!)
)
)






















