How to Manually Plaats een groep gebruikers in een SMF forum gebruiken PHP
Deze handleiding wordt ervan uitgegaan dat u bekend bent met mijn post: How to Manually Plaats een gebruiker in een SMF forum gebruiken PHP.
Ik heb onlangs geconfronteerd met de uitdaging van het verplaatsen van 800 of zo bands uit een database in een SMF forum. Ik geconfronteerd met een paar van de problemen bij het maken van de beweging die ik had geen betrekking op in de eerste post:
- De band namen waren niet honderd procent veilig zijn voor een teken van karakter verplaatsen in de SMF-database. Dus een soort van naam wijzigen functie moest worden gebruikt.
- De bands hebben geen wachtwoorden. Dus een soort van wachtwoord generatie moet worden gebruikt.
De stappen die ik ging over tot registratie van de banden in het forum ging een beetje als volgt uit:
Open de Band Database
voor elke (Band) (
Genereer Wachtwoord
Hernoemen Band met "veilige" naam
Pak en het genereren van informatie die nodig is voor het invoegen van de gebruiker
Plaats Band in smf_members
Band Stuur een e-mail met het wachtwoord
)
Ik had beschikbare informatie uit de database die band was nuttig inbegrepen: bandnaam, bandEmail en bandWebsite
Hier is het wachtwoord generatie functie gebruikte ik (blatently genomen uit totallyphp.co.uk):
functie createRandomPassword () (
$ chars = "abcdefghijkmnopqrstuvwxyz023456789";
() * 1000000); srand ((double) microtime () * 1000000);
$ i = 0;
$ pass = ";
while ($ i <= 7) (33; $ num = rand ()% 33;
$ tmp = substr ($ chars, $ num, 1);
$ pass = $ pass. $ tmp;
$ i + +;)
return $ pass;
)
Het wachtwoord gecreëerd hier is relatief zwak, maar het was goed genoeg voor mijn doeleinden. Elke generatie wachtwoord functie zou werken prima hier. Ik koos voor deze omdat het gemakkelijk zou zijn voor de leden om te onthouden als ze koos niet te veranderen.
Hoe dit te doen:
/ / Eerste verbinding te maken met de band-database
$ username = "bandUsername";
$ host = "bandHost";
$ mijnwachtwoord = "bandPassword";
$ db_name = "bandDatabase";
("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mijnwachtwoord") or die ( "kan geen verbinding maken met server");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "niet kunt selecteren DB");
/ / Nu grijp alle van de bands uit de database
$ query = "SELECT * FROM allBands";
$ bands = mysql_query ($ query) or die ( "Fout 2222b Config");
$ userRows = mysql_num_rows ($ banden);
/ / Laten we nu eens verbinding te maken met de SMF db
$ host = "smfhost"; / / Host-naam
$ username = "smfuser; / / mysql gebruikersnaam
$ mijnwachtwoord = "smfpassword"; / / Mysql wachtwoord
$ db_name = "smfdatabase"; / / Database naam
("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mijnwachtwoord") or die ( "kan geen verbinding maken met server");
("cannot select DB"); mysql_select_db ( "$ db_name") or die ( "niet kunt selecteren DB");
/ / $ vaild_chars zal de array met toegestane tekens voor gebruikersnamen. Ik heb besloten om alleen letters en nummers. Er zijn nog andere tekens die kunnen worden gebruikt die niet zou leiden tot een probleem, maar voor stijl redenen heb ik besloten te gaan met alleen cijfers en letters
$ valid_chars = "ABCDEFGHIJKLMNOPQRSTU VWXYZ 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = explode ( "", $ valid_chars);
/ / Nu moeten we lus via elke band
){ for ($ i = 0; $ i <$ userRows; $ i + +) (
($bands)){ if ($ row = mysql_fetch_assoc ($ bands)) (
/ / Extraheer de band informatie
extract ($ row);
/ / Maak een wachtwoord voor de band
$ realPassword = createRandomPassword ();
/ / Kies ik voor echo van de bandnaam en wachtwoord als onderdeel van mijn debuggen en zo zie ik de functie als het werkt
echo ( "<br/> bandnaam $ - $ realPassword");
$ newBand = "";
/ / Voor elke letter in de band naam we gaan kijken om te zien of deze overeenkomt met een geldig teken van $ valid_chars. Het is niet wij gaan af te raken van het afgeplat en de band naam
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandnaam); $ j + +) (($band[$j])); $ temp = str_replace ($ valid_chars, "X", strtolower ($ band [$ j]));
if ($ temp == "X")$ newBand = $ newBand. $ band [$ j];
)
/ / I echo de nieuwe naam voor dezelfde reden Ik sluit me aan de oude naam en wachtwoord
echo ( "- $ newBand");
/ / We hebben de nieuwe band naam .... nu laten we beginnen buliding de info we nodig hebben om in de db ...
$ memberName = $ newBand;
realname $ = $ newBand / / ik de echte naam en lidnaam hetzelfde. De banden kunnen veranderen als ze willen
$ emailadres = $ bandEmail;
$ websiteUrl = $ bandWebsite / / Daar heb ik de banden websites kan net zo goed voer ze
$ websiteTitle = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ password = SHA1 (strtolower ($ memberName). $ realPassword); / / Wachtwoord moeten worden gecodeerd/ / Zorg ervoor dat hun geen lid met dezelfde naam in de SMF-database. We willen niet per ongeluk iemand voer tweemaal
$ query = "SELECT * FROM smf_members WAAR memberName = '$ memberName'";
("Config Error 2222343242b"); $ result = mysql_query ($ query) or die ( "Config Error 2222343242b");
$ nRows = mysql_num_rows ($ result);/ / Als het lidnaam is gevonden niets doen
if ($ nRows> 0) ()else (
/ / Als de gebruiker nog niet is aangemeld voor het forum, doen en stuur een e-mail ....
$ query = "INSERT INTO smf_members (memberName, realname, emailadres, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ( '$ memberName', '$ realname', '$ emailadres',' $ is_activated ',' $ ID_POST_GROUP ' , '$ wachtwoord', '$ websiteUrl', '$ websiteTitle') ";("Config Error 2232 "); $ result = mysql_query ($ query) or die ( "Config Error 2232");
/ / Nu hebben we voor het verzenden van de band een e-mail
$ tot = $ emailadres;
$ subject = "Uw gebruikersnaam en wachtwoord forum";/ / Van
$ header = "from: Me <me@mysite.com>";/ / Uw bericht
$ bericht .= "Uw gebruikersnaam en wachtwoord staan hieronder vermeld. U kunt op elk moment hetzij. Indien u niet wilt deelnemen aan onze forums, dat is geen probleem. Just nooit in te loggen en het zal zijn als er niets gebeurde . \ r \ n ";
$ bericht .= "Gebruikersnaam: $ memberName Wachtwoord: $ realPassword \ r \ n";/ / E-mail verzenden
$ verzondenberichten = mail ($ aan, $ onderwerp, $ bericht, $ header);
if ($ verzondenberichten)echo ( "- JA!");
/ / Dit is het laatste deel van onze echo. De "JA!" zal alleen worden afgedrukt als een e-mail wordt verzonden. Dus een volledige afdruk lijn zal er ongeveer zo uitzien:
/ / Adam strijd - 4s6vsxag - AdamStrife - JA!)
)
)






















