Šis vadovėlis prisiima esate susipažinę su mano post: Kaip neautomatiniu būdu įterpti vartotoją SMF Forumas naudojant PHP .
Aš neseniai susidūrė su judančių 800 arba tiek, juostų iš duomenų bazės į SMF forumas iššūkis. Aš susiduria su problemomis, kai jis juda, kad aš ne viršelis pirmą kartą po poros:
- Grupė pavardės nėra garantijos, būtų saugus, padarytais pobūdžio požymio perkelti į SMF duomenų bazėje. Taigi kai pavadinimas pobūdžio pakeitimus funkcija turėjo būti įdarbinti.
- Juostos neturi slaptažodžius. Taigi kai kurie slaptažodis kartos tipas turi būti įdarbintas.
Veiksmus aš apie registruotis visi forume juostose buvo šiek tiek panašus į šį:
Atidaryti Band duomenų bazė
kiekvienam (grupė) (
Sukurti Slaptažodis
Pervardyti Band "saugius" arba pavadinimas
Grab ir surinkti informaciją reikia įrašyti vartotojo
Įdėkite grupei, į smf_members
Siųsti Band su slaptažodis laišką
)
Informacija turėjau gauti iš duomenų bazės juostoje, kuri buvo naudinga įtraukti: bandName, bandEmail ir bandWebsite
Čia yra slaptažodis kartos funkcija aš (blatently paimti iš totallyphp.co.uk ):
funkcija createRandomPassword () (
$ Chars = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1000000);
$ I = 0;
$ Pass = ";
while ($ i <= 7) (
33; $ Num = rand ()% 33;
$ Tmp = substr ($ chars, $ skaicius, 1);
$ Pass = $ raide. $ Tmp;
$ I + +;
)
return $ perduoti;
)
Slaptažodis sukūrė čia yra palyginti silpnos, bet jis buvo pakankamai geras mano tikslais. Bet koks slaptažodį gamybos funkcija veiktų gerai čia. Mane pasirinko šį vieną, nes ji būtų lengvai nariams prisiminti, jei jie pasirinko ne jį pakeisti.
Kaip tai padaryti:
/ / Pirmasis prisijungti prie grupės duomenų bazė
$ Username = "bandUsername";
$ Host = "bandHost";
$ Mypassword = "bandPassword";
$ Db_name = "bandDatabase";
("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mypassword") or die ("Negaliu prisijungti prie serverio");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("negaliu pasirinkti DB");
/ / Dabar patraukti visų juostų iš duomenų bazės
$ Query = "SELECT * FROM allBands";
$ Juostų = mysql_query ($ query) or die ("Klaida konfigūracijos 2222b);
$ UserRows = mysql_num_rows ($ juostas);
/ / Dabar leidžia prisijungti prie SMF db
$ Host = "smfhost" / / Host vardas
$ Username = "smfuser / / mySQL Vartotojas
$ Mypassword = "smfpassword" / / mySQL Slaptažodis
$ Db_name = "smfdatabase" / / duomenų bazės pavadinimas
("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mypassword") or die ("Negaliu prisijungti prie serverio");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("negaliu pasirinkti DB");
/ / $ Vaild_chars tai bus simbolių masyvas leidžiama vardus. Aš nusprendė leisti tik raidės ir skaičiai. Yra ir kitų ženklų, kurie gali būti naudojami, kad nebūtų padaryta problema, bet ir stiliaus priežasčių aš nusprendžiau eiti tik raidės ir skaičiai
$ Valid_chars = "ABCDEFGHIJKLMNOPQRSTU VWXYZ 0 1 2 3 4 5 6 7 8 9";
$ Valid_chars = explode ("", $ valid_chars);
/ / Dabar turime linijos per kiekviena juosta
){ for ($ i = 0; $ i <$ userRows; $ i + +) (
($bands)){ if ($ row = mysql_fetch_assoc ($ juostas)) (
/ / Ištrauka grupės informacija
ekstraktas ($ row);
/ / Sukuriamas juostos slaptažodį
$ RealPassword = createRandomPassword ();
/ / Aš pasirinksiu echo bandname ir slaptažodį kaip mano derinimo ir todėl aš galiu pamatyti, funkcijos, nes ji veikia
echo ("<br/> $ bandName - $ realPassword");
$ NewBand = "";
/ / Kiekvienai pavadinimas raidę juostoje mes pažiūrėkite, jei ji atitinka svarbių savybių nuo $ valid_chars. Tai ji nėra mes ketiname atsikratyti jos ir trumpinti Grupės pavadinimas
($bandName); $j ++ ){ for ($ j = 0, $ j <strlen ($ bandName); $ j + +) (
($band[$j])); $ Temp = str_replace ($ valid_chars, "X", strtolower ($ juostos [$ j]));
if ($ temp == "X")
$ NewBand = $ newBand. $ Juostos [$ j];
)
/ / Aš echo naujas vardas dėl tos pačios priežasties aš aidas senųjų vardą ir slaptažodį
echo ("- $ newBand");
/ / Mes naujas grupės pavadinimas .... dabar galime pradėti buliding info mes turime įtraukti į db ...
$ MemberName = $ newBand;
$ Realname = $ newBand / / galiu nustatyti tikrojo vardo ir valstybės pavadinimas tas pats. Juostas galima keisti, jeigu jie nori
$ E-pašto adresą = $ bandEmail;
$ WebsiteUrl = $ bandWebsite / / Kadangi aš juostas tinklapiuose gali taip pat įeiti
$ WebsiteTitle = $ newBand;
$ Is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ Password = sha1 (strtolower ($ memberName). $ RealPassword) / / Slaptažodis turi būti šifruojamas
/ / Įsitikinkite, jų nematote narys tuo pačiu pavadinimu SMF duomenų bazėje. Mes nenorime, kad netyčia patekti bet du kartus
$ Query = "SELECT * FROM smf_members KUR memberName = '$ memberName";
("Config Error 2222343242b"); $ Result = mysql_query ($ query) or die ("Klaida konfigūracijos 2222343242b");
$ NRows = mysql_num_rows ($ result);
/ / Jei narys pavadinimas rasti nieko
if ($ nRows> 0) ()
else (
/ / Jei vartotojas nėra jau užsiregistravau į forumą, tai padaryti ir atsiųsti elektroniniu paštu ....
$ Query = "INSERT INTO smf_members (memberName, realname, e-pašto adresą, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ('$ memberName", "$ realname", "$ e-pašto adresą', '$ is_activated", "$ ID_POST_GROUP" , '$ password', '$ websiteUrl "," $ websiteTitle') ";
("Config Error 2232 "); $ Result = mysql_query ($ query) or die ("Klaida Config 2232);
/ / Dabar mes turime išsiųsti juosta pašto
$ Iki = $ e-pašto adresą;
$ Subject = "Jūsų forumo vartotojo vardą ir slaptažodį";
/ / Nuo
$ Header = "Nuo: Me <me@mysite.com>";
/ / Jūsų žinutė
$ Message .= "Jūsų prisijungimo vardas ir slaptažodis yra išvardinti žemiau. Jūs galite pakeisti arba bet kuriuo metu. Jei nenorite dalyvauti forume, tai ne problema. Tiesiog niekada prisijunkite ir jis bus kaip niekas niekada neįvyko. \ r \ n ";
$ Message .= "Vartotojo vardas: $ memberName Slaptažodis: $ realPassword \ r \ n";
/ / Siųsti laišką
$ Juodraštis, juodraščiai = mail ($ prie $ tema, $ message, $ header);
if ($ juodraštis, juodraščiai)
echo ("- TAIP!");
/ / Tai paskutinė dalis mūsų echo. "-TAIP!" bus tik spausdinami, jeigu yra siunčiamas paštu. Taigi visiškai spaudinys linija atrodys maždaug taip:
/ / Adam Strife - 4s6vsxag - AdamStrife - TAIP!
)
)
)