Ovaj tutorial podrazumijeva da ste upoznati sa mojim post: Kako to Priručnik Umetanje korisnika na SMF forum Koristeći PHP .
Nedavno sam suočena s izazovom ili tako kreće 800 bendova iz baze podataka u SMF forum. Sam se suočio nekoliko problema prilikom potez koji nisam pokrivaju u prvi post:
- Imena sastava nije bilo zajamčeno da će sigurno za znak znak premjestiti u SMF baze podataka. Dakle, neke vrste mijenjanja imena funkcije morali biti zaposleni.
- Bendovi nemaju lozinke. Tako neki tip lozinku generacije treba biti zaposlen.
Skaline JA je otišao da se registrirate o svim bendovima na forumu otišao malo ovako:
Otvaranje baze Band
za svaki (Band) (
Kreiraj lozinka
Preimenuj Band sa "sigurnom" ugled
Grab i generirati podatke potrebne za umetanje korisnika
Umetnite Band u smf_members
Pošalji Band-mail s lozinkom
)
Informacije sam imao na raspolaganju od benda bazu podataka koja je korisna uključeno: bandName, bandEmail i bandWebsite
Ovdje je funkcija stvaranje lozinku sam koristio (blatently preuzeta iz totallyphp.co.uk ):
Funkcija createRandomPassword () (
$ Znakova = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1.000.000);
$ I = 0;
$ Pass = ";
while ($ i <= 7) (
33; $ Num = rand ()% 33;
$ Tmp = substr ($ znakova, $ num, 1);
$ Pass = $ pass. $ Tmp;
$ I + +;
)
povratak $ pass;
)
Lozinka stvorio ovdje je relativno slab, ali to je bio dovoljno dobar za moje potrebe. Svaka funkcija generacije lozinka će raditi ovdje. Izabrao sam ovaj neki, jer bi se lako za članove sjetiti da li su izabrali da ne mijenjati.
Kako to učiniti:
/ / Prvo spajanje na bazu podataka bend
$ Username = "bandUsername";
$ Host = "bandHost";
$ Mojalozinka = "bandPassword";
$ Db_name = "bandDatabase";
("cannot connect to server"); mysql_connect ("$ host", "$ ime", "$ mojalozinka") or die ("ne mogu spojiti na poslužitelj");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("ne mogu odabrati DB");
/ / Sada zgrabite sve bendova iz baze podataka
$ Query = "SELECT * FROM allBands";
$ Bendova = mysql_query ($ upit) or die ("Greąka u konfiguraciji 2222b");
$ UserRows = mysql_num_rows ($ bendova);
/ / Sada omogućava spajanje na SMF db
$ Host = "smfhost"; / / Host name
$ Username = "smfuser; / / mysql username
$ Mojalozinka = "smfpassword"; / / mysql lozinka
$ Db_name = "smfdatabase"; / / Naziv baze
("cannot connect to server"); mysql_connect ("$ host", "$ ime", "$ mojalozinka") or die ("ne mogu spojiti na poslužitelj");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("ne mogu odabrati DB");
/ / $ Vaild_chars će biti dozvoljeno niz znakova za korisničkih imena. JA odlučio je da jedini dopustiti slova i brojki. Postoje i drugi znakovi koji se mogu koristiti kako ne bi uzrokovalo problem, ali za stil razloga sam odlučio otići sa samo slova i brojke
$ Valid_chars = "ABCDEFGHIJKLMNOPQRSTU VWXYZ 0 1 2 3 4 5 6 7 8 9";
$ Valid_chars = explode ("", $ valid_chars);
/ / Sada trebamo petlju kroz svaki bend
){ for ($ i = 0; $ i <$ userRows; $ i + +) (
($bands)){ if ($ row = mysql_fetch_assoc ($ bendova)) (
/ / Ekstrakt bend informacije
ekstrakt ($ row);
/ / Kreiraj lozinka za bend
$ RealPassword createRandomPassword = ();
/ / Sam se odlučio za jeke bandname i lozinku kao dio moje otkrivanje pogrešaka i tako da mogu vidjeti funkciju kao što to radi
echo ("<br/> bandName $ - $ realPassword");
$ NewBand = "";
/ / Za svako slovo u ime benda ćemo gledati da vidi da li odgovara važećim znakom od $ valid_chars. To ne ćemo da biste dobili osloboditi od njega i izrežite ime benda
($bandName); $j ++ ){ for ($ i = 0; $ j <strlen ($ bandName); $ i + +) (
($band[$j])); $ Temp = str_replace ($ valid_chars, "X", strtolower ($ bend [$ j]));
if ($ temp == "X")
$ = $ NewBand newBand. Benda $ [$ j];
)
/ / Echo sam novi naziv istog razloga sam jeka staro ime i lozinku
echo ("- $ newBand");
/ / Mi smo novo ime benda .... Sada ćemo započeti buliding info trebamo umetnuti u db ...
$ = $ MemberName newBand;
$ = $ Realname newBand; / / postaviti pravo ime i korisničko ime isto. Bendovi mogu ga promijeniti ako žele
$ = $ EmailAddress bandEmail;
$ = $ WebsiteUrl bandWebsite; / / Budući da sam bendova 'web stranice kao što bi i njima ući
$ = $ WebsiteTitle newBand;
Is_activated $ = 1;
ID_POST_GROUP $ = 4;
($memberName).$realPassword); //Password must be encrypted $ Password = sha1 (strtolower ($ memberName). RealPassword $); / / Zaporka mora biti šifriran
/ / Provjerite da njihov član nije sa istim imenom u SMF baze podataka. Mi ne želimo ulaziti tko slučajno dva puta
$ Query = "SELECT * FROM WHERE smf_members memberName = '$ memberName'";
("Config Error 2222343242b"); $ Rezultat = mysql_query ($ upit) or die ("Greąka u konfiguraciji 2222343242b");
$ Nrows = mysql_num_rows ($ rezultat);
/ / Ako korisničko ime nađe ništa ne
if ($ nrows> 0) ()
else (
/ / Ako korisnik nije već prijavio za forum, učinite to i pošaljite 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 "); $ Rezultat = mysql_query ($ upit) or die ("Greąka u konfiguraciji 2232");
/ / Sada nam je potrebno poslati e-mail bend
$ To = $ emailAddress;
$ Subject = "Vaša forumu korisničko ime i lozinku";
/ / Od
$ Header = "From: Me <me@mysite.com>";
/ / Poruka
$ Poruka .= "Vaša prijava i lozinka su navedene u nastavku. Možete promijeniti bilo u bilo koje vrijeme. Ako ne želite da sudjeluju u našim forumima, to nije problem. Ali nikada se prijavite i da će biti kao nikada ništa dogodilo. \ r \ n ";
$ Poruka .= "Korisničko ime: Lozinka memberName $: $ realPassword \ r \ n";
/ / Slanje e-pošte
$ = Poslanapošta mail ($ to, $ subject, $ message, $ header);
if ($ poslanapošta)
echo ("- DA!");
/ / Ovo je posljednji dio naše jeka. "-Da!" samo će se ispisati ako je pošta je poslana. Dakle cijelu liniju ispisa će izgledati otprilike ovako:
/ / Adam Strife - 4s6vsxag - AdamStrife - DA!
)
)
)