Tento návod predpokladá, že ste sa oboznámili s mojím post: Ako ručne vložiť užívateľa do SMF fóra pomocou PHP .
Nedávno som stál pred úlohou pohybujúce sa 800 alebo tak kapiel z databázy do fóra SMF. I čelí niekoľkým problémom pri pohybe, že som nemala vzťahovať na prvý post:
- Kapela mena bola nemusia byť zaručene úplne bezpečné pre jednotlivé znaky presunúť do databázy SMF. Takže nejaké meno, ktorým sa mení funkcie musel byť zamestnaný.
- Kapely nemajú hesla. Takže nejaký typ hesla generácia potrebuje byť zamestnaný.
Kroky som išiel asi na registráciu všetkých kapiel na fóre išiel trochu ako toto:
Open kapela databázy
pre každého (skupina) (
Vytvoriť heslo
Premenovať kapela s "bezpečné" meno
Chyť a získanie informácií potrebných pre vloženie užívateľa
Vložiť do kapely smf_members
Pošlite kapela e-mail s heslom
)
Informácie som mal k dispozícii z kapely databázy, ktorá bola užitočná zahrnuté: bandName, bandEmail, a bandWebsite
Tu je heslo generácie funkciu som použil (blatently prevzatý z totallyphp.co.uk ):
Funkcia createRandomPassword () (
$ Znaky = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1000000);
$ I = 0;
$ Pass = ";
while ($ i <= 7) (
33; $ Num = rand ()% 33;
$ Tmp = substr ($ znakov, $ num, 1);
$ Pass = $ prejsť. $ Tmp;
$ I + +;
)
návrat $ prejsť;
)
Heslo tu vzniklo, je pomerne slabý, ale bolo to dosť dobré pre moje účely. Akékoľvek heslo generácie funkcie by fungovať dobre tu. Zvolil som túto, pretože to by bolo jednoduché pre členov pamätať, ak rozhodli sa to zmeniť.
Ako na to:
/ / Najskôr pripojiť ku kapele databázy
$ Username = "bandUsername";
$ Host = "bandHost";
$ Mypassword = "bandPassword";
$ DB_NAME = "bandDatabase";
("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mypassword") or die ("Nemožno sa pripojiť k serveru");
("cannot select DB"); mysql_select_db ("$ DB_NAME") or die ("Nemožno vybrať DB");
/ / Teraz urvat všetky kapely z databázy
$ Query = "SELECT * FROM allBands";
$ Kapely = mysql_query ($ query) alebo die ("Config Chyba 2222b");
$ UserRows = mysql_num_rows ($ pásma);
/ / Teraz umožňuje pripojiť k SMF db
$ Host = "smfhost" / / Názov hostiteľa
$ Username = "smfuser; / / mysql užívateľské meno
$ Mypassword = "smfpassword"; / / mysql heslo
$ DB_NAME = "smfdatabase" / / Názov databázy
("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mypassword") or die ("Nemožno sa pripojiť k serveru");
("cannot select DB"); mysql_select_db ("$ DB_NAME") or die ("Nemožno vybrať DB");
/ / $ Vaild_chars bude pole povolených znakov pre užívateľské mená. Rozhodol som sa povolí iba písmená a číslice. Existujú aj iné znaky, ktoré by mohli byť použité a ktoré by nemalo mať problém, ale pre štýl dôvodov, prečo som sa rozhodol ísť s iba písmená a číslice
$ Valid_chars = "abcdefghijklmnopqrstu VWXYZ 0 1 2 3 4 5 6 7 8 9";
$ Valid_chars = explode ("", $ valid_chars);
/ / Teraz sa musíme prechádzať každé pásmo
){ for ($ i = 0; $ i <$ userRows; $ i + +) (
($bands)){ if ($ row = mysql_fetch_assoc ($ pásma)) (
/ / Výpis kapela informácií
extrakt ($ row);
/ / Vytvorenie hesla pre kapelu
$ RealPassword = createRandomPassword ();
/ / Aj rozhodnete echo bandname a heslo ako súčasť mojej ladenie, a tak vidím fungovať ako to funguje
echo ("<br/> $ bandName - $ realPassword");
$ NewBand = "";
/ / Pre každé písmeno v názve kapely budeme pozrieť, či sa zhoduje s platným znakom z $ valid_chars. To nie je hodláme zbaviť, a skrátiť názov kapely
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandName), $ j + +) (
($band[$j])); $ Temp = str_replace ($ valid_chars, "X", strtolower ($ pásmo [$ j]));
if ($ temp == "X")
$ NewBand = $ newBand. $ Pásmo [$ j];
)
/ / Aj echo nový názov pre rovnaký dôvod, prečo som echo staré meno a heslo
echo ("- $ newBand");
/ / Máme nového názvu kapely .... Teraz začnime buliding info musíme vložiť do db ...
$ MemberName = $ newBand;
$ REALNAME = $ newBand, / / som skutočné meno a člen názov rovnaký. Pásma je možné ju zmeniť, ak chcú
$ EmailAddress = $ bandEmail;
$ WebsiteUrl = $ bandWebsite; / / Pretože som kapely 'internetovej stránky môžu tiež vstupovať
$ WebsiteTitle = $ newBand;
$ Is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ Password = SHA1 (strtolower ($ memberName). $ RealPassword) / / Heslo musí byť šifrované
/ / Uistite sa, že nejde o ich členom sa rovnakým názvom v databáze SMF. Nechceme, aby náhodou niekto vstúpiť dvakrát
$ Query = "SELECT * FROM smf_members WHERE memberName = '$ memberName'";
("Config Error 2222343242b"); $ Result = mysql_query ($ query) alebo die ("Config Chyba 2222343242b");
$ Nrows = mysql_num_rows ($ result);
/ / Ak členský meno sa nachádza nerobiť nič
if ($ nrows> 0) ()
else (
/ / Ak nie je používateľ už zaregistrovali na fórach, tak a poslať e-mail ....
$ Query = "INSERT INTO smf_members (memberName, skutočné meno, emailAddress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ('$ memberName', '$ skutočné meno', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP' , '$ heslo', '$ websiteUrl', '$ websiteTitle') ";
("Config Error 2232 "); $ Result = mysql_query ($ query) alebo die ("Config Chyba 2232");
/ / Teraz sa musíme poslať kapele email
$ Do = $ emailAddress;
$ Subject = "Vaše forum užívateľské meno a heslo";
/ / Z
$ Header = "od: Me <me@mysite.com>";
/ / Váš odkaz
$ Message .= "Vaše prihlasovacie meno a heslo sú uvedené nižšie. Môžete zmeniť buď kedykoľvek. Ak sa nechcete podieľať na našom fóre, že to nie je problém. Proste nikdy prihlásiť a bude to ako sa nič nestalo. \ r \ n ";
$ Message .= "Meno: $ memberName Heslo: $ realPassword \ r \ n";
/ / Odoslať email
$ Sentmail = mail ($ k, $ subject, $ message, $ header);
if ($ sentmail)
echo ("- ÁNO!");
/ / Toto je posledná časť našej echo. "-ÁNO!" bude tlačiť len v prípade e-mailu je poslal. Takže plný výpis riadok bude vyzerať nejako takto:
/ / Adam Strife - 4s6vsxag - AdamStrife - ÁNO!
)
)
)