Kako ručno umetanje grupa korisnika u SMF forum koristeći PHP
Ovaj Tutorial pretpostavlja da su upoznati s mojim post: kako se ručno Umetni Korisničke u SMF forum Korištenje PHP.
Nedavno sam izazov i suočen sele 800 ili tako bendova iz baze podataka u SMF forum. Suočila sam nekoliko problema prilikom čega je potez da nisam pokriće u prvi post:
- Band imena nisu bili zajamčeni biti siguran za znak po znak premjestiti u SMF bazu podataka. Tako je nekakav naziv mijenjanjem funkcija morali biti zaposlen.
- The bandovi nemaju lozinke. Tako neki tip lozinku naraštaj mora biti zaposlen.
Koraci ja obilazili registrirati sve od bendova na forum ode malo kao ovaj:
Otvorite Band Database
za svaku (Band) (
Izradi Lozinka
Preimenuj Band sa "sigurno" ime
Grabežljivac i generiranje informacije potrebne za umetanje korisnik
Umetni Band u smf_members
Band Pošalji e-mail s lozinkom
)
Informacije sam imao na raspolaganju bazu podataka iz benda da je korisno uključiti: bandName, bandEmail i bandWebsite
Ovdje je funkcija generiranje zaporke sam koristio (blatently oduzeo totallyphp.co.uk):
createRandomPassword funkcija () (
$ slova = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((dvokrevetne) microtime () * 1000000);
$ i = 0;
$ pass = ";
a ($ i <= 7) (33; $ num = ivica ()% 33;
$ tmp = substr ($ slova, $ num, 1);
$ pass = $ pass. $ tmp;
$ i + +;)
povratak $ pass;
)
Lozinka kreirana ovdje je relativno slab, ali je dovoljno dobar za moje potrebe. Svaka lozinka generiranje funkcija raditi će se ovdje. Izabrao sam ovaj jer bi se lako za članove zapamtiti ako su izabrali da ne promijeniti ga.
Kako to učiniti:
/ / Prvi povezati s bendom baze podataka
$ 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 umrijeti ( "ne mogu odabrati DB");
/ / Sada grabežljivac sve od bendova iz baze podataka
$ upit = "SELECT * FROM allBands";
$ bendova = mysql_query ($ upit) ili umrijeti ( "Config 2222b Greška");
$ userRows = mysql_num_rows ($ bendova);
/ / Sada omogućuje spajanje na SMF db
$ host = "smfhost", / / host ime
$ username = "smfuser; / / MySQL korisničko ime
$ 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 umrijeti ( "ne mogu odabrati DB");
/ / $ vaild_chars će biti niz znakova Dozvoljeno za korisnička imena. Sam odlučio dopustiti samo slova i brojki. Postoje i druge znakove da bi se mogla koristiti da ne bi uzrok problema, ali za stil razloga sam odlučio ići sa samo slova i brojeva
$ valid_chars = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = eksplodirati ( "", $ valid_chars);
/ / Sada trebamo petlja kroz svaki bend
){ for ($ i = 0; $ i <$ userRows; $ i + +) (
($bands)){ if ($ row = mysql_fetch_assoc ($ bendova)) (
/ / Izdvojite band informacije
ekstrakt ($ row);
/ / Stvaranje lozinke za pojas
$ realPassword = createRandomPassword ();
/ / Ja izabrati da se bandname jeka i lozinku kao dio moje ispravljanje pogrešaka i da vas mogu vidjeti kako to radi funkcija
echo ( "$ <br/> bandName - $ realPassword");
newBand $ = "";
/ / Za svako slovo u ime benda ćemo se gledati da li to odgovara važećim znakom od $ valid_chars. Ona to ne reći ćemo odstraniti ga i izrežite benda ime
($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. benda $ [$ j];
)
/ / Echo sam novi naziv za istog razloga sam jeka je staro ime i lozinku
echo ( "- $ newBand");
/ / Imamo novi Band ime .... Sada ćemo započeti buliding info trebamo umetnuti u db ...
memberName $ = $ newBand;
$ $ = realname newBand; / / ja postaviti pravo ime i naziv isto član. U bendova može promijeniti ako to žele
emailAddress $ = $ bandEmail;
websiteUrl $ = $ bandWebsite; / / Od imam bendova 'web-mjesta možda i upisati ih
websiteTitle $ = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ lozinka = sha1 (strtolower ($ memberName). realPassword $), / / Lozinka mora biti šifriran/ / Provjerite jesu li njihove isn'ta člana s istim imenom u SMF bazu podataka. Mi ne želimo ući bilo tko slučajno dvaput
$ upit = "SELECT * FROM smf_members GDJE memberName = '$ memberName'";
("Config Error 2222343242b"); $ rezultat = mysql_query ($ upit) ili umrijeti ( "Config 2222343242b Greška");
$ nrows = mysql_num_rows ($ rezultat);/ / Ako je članica ime je pronađeno ništa
if ($ nrows> 0) ()else (
/ / Ako korisnik nije već prijavio za forume, to i poslati e-mail ....
$ upit = "INSERT U smf_members (memberName, realname, emailAddress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) vrijednosti ( '$ memberName", "$ realname", "$ emailAddress", "$ is_activated", "$ ID_POST_GROUP' , '$ Lozinka', '$ websiteUrl', '$ websiteTitle') ";("Config Error 2232 "); $ rezultat = mysql_query ($ upit) ili umrijeti ( "Config Pogreška 2232");
/ / Sada trebamo poslati poruku e-pošte grupe
$ do = $ emailAddress;
$ subject = "forumu Vaš korisničko ime i lozinku";/ / Od
$ zaglavlje = "iz: Me <me@mysite.com>";/ / Vaša poruka
$ poruka .= "Vaše ime i zaporka su navedene u nastavku. Možete promijeniti ili na bilo. Ako ne želite sudjelovati u forumima, to je bez problema. Samo ne prijavite se i bit će kao ništa ikada dogodilo . \ r \ n ";
$ poruka .= "Korisničko ime: Lozinka memberName $: $ realPassword \ r \ n";/ / Pošalji e-mail
$ poslanapošta = mail ($ do, $ subject, $ poruka, $ zaglavlje);
if ($ poslanapošta)echo ( "- DA!");
/ / Ovo je posljednji dio naše jeka. U "-DA!" će biti samo ako je tiskana e-mail je poslan. Tako potpuni ispis linija će izgledati otprilike ovako:
/ / Adam Strife - 4s6vsxag - AdamStrife - DA!)
)
)






















