Tento návod předpokládá, že jste se obeznámili s mým post: Jak ručně vložit uživatele do SMF fóra pomocí PHP .
Nedávno jsem stál před úkolem pohybující se 800 nebo tak kapel z databáze do fóra SMF. I čelí několika problémům při pohybu, že jsem neměla vztahovat na první post:
- Kapela jména byla nemusejí být zaručeně zcela bezpečné pro jednotlivé znaky přesunout do databáze SMF. Takže nějaké jméno, kterým se mění funkce musel být zaměstnán.
- Kapely nemají hesla. Takže nějaký typ hesla generace potřebuje být zaměstnán.
Kroky jsem šel asi k registraci všech kapel na fóru šel trochu jako toto:
Open kapela databáze
pro každého (skupina) (
Vytvořit heslo
Přejmenovat kapela s "bezpečné" jméno
Chyť a získání informací potřebných pro vložení uživatele
Vložit do kapely smf_members
Pošlete kapela e-mail s heslem
)
Informace jsem měl k dispozici z kapely databáze, která byla užitečná zahrnuto: bandName, bandEmail, a bandWebsite
Zde je heslo generace funkci jsem použil (blatently převzat z totallyphp.co.uk ):
Funkce createRandomPassword () (
$ Znaky = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1000000);
$ I = 0;
$ Pass = ";
while ($ i <= 7) (
33; $ Num = rand ()% 33;
$ Tmp = substr ($ znaků, $ num, 1);
$ Pass = $ projít. $ Tmp;
$ I + +;
)
návrat $ projít;
)
Heslo zde vzniklo, je poměrně slabý, ale bylo to dost dobré pro mé účely. Jakékoli heslo generace funkce by fungovat dobře zde. Zvolil jsem tuhle, protože to by bylo snadné pro členy pamatovat, pokud rozhodli se to změnit.
Jak na to:
/ / Nejdříve připojit ke kapele databáze
$ Username = "bandUsername";
$ Host = "bandHost";
$ Mypassword = "bandPassword";
$ Db_name = "bandDatabase";
("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mypassword") or die ("Nelze se připojit k serveru");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("Nelze vybrat DB");
/ / Nyní urvat všechny kapely z databáze
$ Query = "SELECT * FROM allBands";
$ Kapely = mysql_query ($ query) nebo die ("Config Chyba 2222b");
$ UserRows = mysql_num_rows ($ pásma);
/ / Nyní umožňuje připojit k SMF db
$ Host = "smfhost" / / Název hostitele
$ Username = "smfuser; / / mysql uživatelské jméno
$ Mypassword = "smfpassword"; / / mysql heslo
$ Db_name = "smfdatabase" / / Název databáze
("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mypassword") or die ("Nelze se připojit k serveru");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("Nelze vybrat DB");
/ / $ Vaild_chars bude pole povolených znaků pro uživatelská jména. Rozhodl jsem se povolí pouze písmena a číslice. Existují i jiné znaky, které by mohly být použity, že by nezpůsobila problém, ale pro styl důvodů jsem se rozhodl jít s pouze písmena a čísla
$ Valid_chars = "abcdefghijklmnopqrstu VWXYZ 0 1 2 3 4 5 6 7 8 9";
$ Valid_chars = explode ("", $ valid_chars);
/ / Nyní se musíme procházet každé pásmo
){ for ($ i = 0; $ i <$ userRows; $ i + +) (
($bands)){ if ($ row = mysql_fetch_assoc ($ pásma)) (
/ / Výpis kapela informací
extrakt ($ row);
/ / Vytvoření hesla pro kapelu
$ RealPassword = createRandomPassword ();
/ / I rozhodnete echo bandname a heslo jako součást mé ladění, a tak vidím fungovat jako to funguje
echo ("<br/> $ bandName - $ realPassword");
$ NewBand = "";
/ / Pro každé písmeno v názvu kapely budeme podívat, jestli se shoduje s platným znakem z $ valid_chars. To není hodláme zbavit, a zkrátit název 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];
)
/ / I echo nový název pro stejný důvod, proč jsem echo staré jméno a heslo
echo ("- $ newBand");
/ / Máme nového názvu kapely .... Nyní začněme buliding info musíme vložit do db ...
$ MemberName = $ newBand;
$ Realname = $ newBand, / / jsem skutečné jméno a člen název stejný. Pásma je možné ji změnit, pokud chtějí
$ EmailAddress = $ bandEmail;
$ WebsiteUrl = $ bandWebsite; / / Protože jsem kapely 'internetové stránky mohou také vstupovat
$ WebsiteTitle = $ newBand;
$ Is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ Password = SHA1 (strtolower ($ memberName). $ RealPassword) / / Heslo musí být šifrována
/ / Ujistěte se, že nejde o jejich členem se stejným názvem v databázi SMF. Nechceme, aby náhodou někdo vstoupit dvakrát
$ Query = "SELECT * FROM smf_members WHERE memberName = '$ memberName'";
("Config Error 2222343242b"); $ Result = mysql_query ($ query) nebo die ("Config Chyba 2222343242b");
$ Nrows = mysql_num_rows ($ result);
/ / Pokud členský jméno se nalézá nedělat nic
if ($ nrows> 0) ()
else (
/ / Pokud není uživatel již zaregistrovali na fórech, tak a poslat e-mail ....
$ Query = "INSERT INTO smf_members (memberName, skutečné jméno, emailAddress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ('$ memberName', '$ skutečné jméno', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP' , '$ heslo', '$ websiteUrl', '$ websiteTitle') ";
("Config Error 2232 "); $ Result = mysql_query ($ query) nebo die ("Config Chyba 2232");
/ / Nyní se musíme poslat kapele email
$ Do = $ emailAddress;
$ Subject = "Vaše forum uživatelské jméno a heslo";
/ / Z
$ Header = polí "od: Me <me@mysite.com>";
/ / Váš vzkaz
$ Message .= "Vaše přihlašovací jméno a heslo jsou uvedeny níže. Můžete změnit buď kdykoliv. Pokud si nechcete podílet na našem fóru, že to není problém. Prostě nikdy přihlásit a bude to jako nic nestalo. \ r \ n ";
$ Message .= "Jméno: $ memberName Heslo: $ realPassword \ r \ n";
/ / Odeslat email
$ Sentmail = mail ($ k, $ subject, $ message, $ header);
if ($ sentmail)
echo ("- ANO!");
/ / Toto je poslední část naší echo. "-ANO!" bude tisknout pouze v případě e-mailu je poslal. Takže plný výpis řádek bude vypadat nějak takto:
/ / Adam Strife - 4s6vsxag - AdamStrife - ANO!
)
)
)