Hur du manuellt Bifoga en grupp användare i ett SMF Forum Använda PHP
Denna handbok förutsätter att du känner till min post: Hur du manuellt Bifoga en User i en SMF Forum Använda PHP.
Jag har nyligen inför utmaningen att flytta 800-tal band från en databas till en SMF forum. Jag står inför ett par problem med att flytta för att jag inte täcker i första inlägget:
- Bandets namn var inte garanteras vara säker för en karaktär med karaktär flytta in i SMF databas. Så någon form av namn ändra funktionen måste anställas.
- De band inte har lösenord. Så någon typ av lösenord generation måste anställas.
De steg som jag gick om att registrera alla banden i forumet gick lite så här:
Öppna Band Database
För varje (Band) (
Generera lösenord
Byt namn Band med "säkra" namn
Ta och generera information som behövs för att infoga användaren
Sätt Band i smf_members
Skicka Band ett e-postmeddelande med lösenord
)
Information jag hade tillgänglig från bandet databas som var användbara ingår: bandnamnet, bandEmail och bandWebsite
Här är lösenordet generation funktionen jag använde (blatently tas från totallyphp.co.uk):
funktion createRandomPassword () (
$ tecken = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1000000);
$ i = 0;
$ pass = ";
while ($ i <= 7) (33; $ num = rand ()% 33;
$ tmp = substr ($ tecken, $ num, 1);
$ pass = $ pass. $ tmp;
$ i + +;)
return $ pass;
)
Lösenordet skapas här är relativt svag, men det var bra nog för mina syften. Alla lösenord generation funktion skulle fungera bra här. Jag valde den här en, eftersom det skulle vara lätt för medlemmarna att komma ihåg om de valde att inte ändra det.
Hur man gör:
/ / First ansluta till bandet databas
$ username = "bandUsername";
$ värd = "bandHost";
$ mittlösenord = "bandPassword";
$ db_name = "bandDatabase";
("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mittlösenord") or die ( "kan inte ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "kan inte välja DB");
/ / Nu fånga alla de band från databasen
$ query = "SELECT * FROM allBands";
$ band = mysql_query ($ query) eller dö ( "Config Error 2222b");
$ userRows = mysql_num_rows ($ band);
/ / Nu kan ansluta till SMF db
$ värd = "smfhost" / / Host name
$ username = "smfuser; / / Mysql username
$ mittlösenord = "smfpassword" / / Mysql password
$ db_name = "smfdatabase" / / Database namn
("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mittlösenord") or die ( "kan inte ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "kan inte välja DB");
/ / $ vaild_chars ska samlingen med tillåtna tecken för användarnamn. Jag bestämde mig för att endast tillåta bokstäver och siffror. Det finns andra tecken som kan användas för att inte utgöra något problem, men för stil skäl har jag beslutat att gå med bara bokstäver och siffror
$ valid_chars = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = explode ( "", $ valid_chars);
/ / Nu måste vi slinga genom varje band
){ for ($ i = 0; $ i <$ userRows, $ i + +) (
($bands)){ if ($ rad = mysql_fetch_assoc ($ band)) (
/ / Utdrag bandet information
extrakt ($ rad);
/ / Skapa ett lösenord för bandet
$ realPassword = createRandomPassword ();
/ / Jag väljer att upprepa bandnamnet och lösenord som en del av min felsökning och jag kan se fungerar som det fungerar
echo ( "<br/> $ bandnamnet - $ realPassword");
$ newBand = "";
/ / För varje bokstav i bandet namn vi kommer att se ut för att se om det matchar ett giltigt tecken från $ valid_chars. Det är inte vi kommer att bli av med den och trunkerar bandet namn
($bandName); $j ++ ){ for ($ j = 0, $ j <strlen ($ bandnamnet), $ j + +) (($band[$j])); $ temp = str_replace ($ valid_chars, "X", strtolower ($ bandet [$ j]));
if ($ temp == "X")$ newBand = $ newBand. $ bandet [$ j];
)
/ / Jag upprepar ett nytt namn för samma anledning jag upprepa det gamla och lösenord
echo ( "- $ newBand");
/ / Vi har nya Band namn .... nu ska vi börja buliding den info vi behöver för att infoga i db ...
$ memberName = $ newBand;
$ realname = $ newBand, / / jag in det riktiga namnet och medlem namn detsamma. Banden kan ändra den om de vill
$ Epostadress = $ bandEmail;
$ websiteUrl = $ bandWebsite; / / Eftersom jag har bandets hemsida kan lika gärna ange dem
$ websiteTitle = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ password = SHA1 (strtolower ($ memberName). $ realPassword); / / Lösenord måste vara krypterad/ / Se deras ingen medlem med samma namn i SMF databas. Vi vill inte av misstag skriva in någon två gånger
$ query = "SELECT * FROM smf_members VAR memberName = '$ memberName'";
("Config Error 2222343242b"); $ result = mysql_query ($ query) eller dö ( "Config Error 2222343242b");
$ nRows = mysql_num_rows ($ result);/ / Om ledamot namn finns inte göra något
if ($ nRows> 0) ()else (
/ / Om användaren inte redan registrerat dig för forum, göra det och skicka ett mail ....
$ query = "infoga i smf_members (memberName, realname, Epostadress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ( '$ memberName', '$ realname", "$ Epostadress',' $ is_activated ',' $ ID_POST_GROUP" , "$ password", "$ websiteUrl ',' $ websiteTitle ')";("Config Error 2232 "); $ result = mysql_query ($ query) eller dö ( "Config Error 2232");
/ / Nu måste vi skicka bandet ett email
$ till = $ Epostadress;
$ Ämne = "Din forum användarnamn och lösenord";/ / Från
$ header = "From: Me <me@mysite.com>";/ / Ditt meddelande
$ meddelande .= "Ditt användarnamn och lösenord anges nedan. Du kan ändra antingen när som helst. Om du inte vill delta i vårt forum, det är inga problem. Just aldrig logga in och det kommer att bli som ingenting hänt . \ r \ n ";
$ meddelande .= "Användarnamn: $ memberName Lösenord: $ realPassword \ r \ n";/ / Skicka e-post
$ skickat = mail ($ till, $ föremål, $ meddelande, $ header);
if ($ skickat)echo ( "- JA!");
/ / Detta är den sista delen av vår eko. Den "JA!" endast kommer att tryckas om ett e-postmeddelande skickas. Så en fullständig utskrift raden ser ut ungefär så här:
/ / Adam Strife - 4s6vsxag - AdamStrife - JA!)
)
)






















