Arkiv för SMF (Enkel Machine Forum)

Så för att hjälpa användare Bädda enkelt videoklipp på ett SMF webbplats

Publicerad i SMF (Enkel Machine Forum) av ShortLikeAFox den 10 augusti 2008

Så ni är ansvariga för att inrätta ett Simple Machines Forum baserade webbplats och vill ett idiotsäkert sätt att tillåta användare att bädda in video från populär video sajterna (YouTube, Google Video, IGN etc.). Du kan med rätta vara rädd för att användarna kan enkelt använda den inbäddade koden från de enskilda webbplatser, eftersom Gud vet vad resultatet kommer att bli. Lösningen på problemet är så enkelt som möjligt. Karl Benson skrev en ändring paket som gör video bäddat in så enkelt som att klippa och klistra in webbadressen till sidan videon verkar i. Detta paket fungerar för över 150 platser och kallas AEVAC (Audio Bädda in video / audio-klipp). Den senaste versionen är version 3.1.2 och det kan hittas här.

Detta är ett mod jag rekommenderar. Används på rätt sätt den har potential att kraftigt minska frekvens och svårighetsgrad av huvudvärk forum administratören.

Hur man manuellt in en grupp av användare till ett SMF forum Använda PHP

Publicerad i SMF (Enkel Machine Forum) , php genom ShortLikeAFox den 30 Juli 2008

Denna handbok förutsätter att du är bekant med mitt inlägg: Hur man manuellt in en användare till ett SMF forum som använder PHP .

Jag möter nyligen utmaningen att flytta 800-tal band från en databas till ett SMF forum. Jag står inför ett par problem när du gör flytten att jag inte täcker i första inlägget:

  1. Bandet namn inte garanteras vara säker för ett tecken för tecken flyttar in i SMF databasen. Så någon form av namn ändra funktion bör anlitas.
  2. Banden har inte lösenord. Så någon form av lösenord generation måste användas.

De steg jag gick om att registrera alla banden i forumet blev lite så här:

Öppna Band Database

för varje (Band) (

Generera lösenord

Byt namn Band med "säkra" namn

Grab och generera information som behövs för att infoga användaren

Sätt bandet i smf_members

Skicka Band ett e-postmeddelande med lösenord

)

Information som jag hade tillgängliga från bandet databasen som var till nytta ingå: bandName, bandEmail och bandWebsite

Här är lösenordet generationen funktion jag använt (blatently tas från totallyphp.co.uk ):

funktion createRandomPassword () (

$ Tecken = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand ((dubbel) microtime () * miljoner);

$ I = 0;

$ Pass = ";



while ($ i <= 7) (

33; $ Num = rand ()% 33;

$ Tmp = substr ($ tecken, $ num, 1);

$ Pass = $ passera. $ Tmp;

$ I + +;

)

return $ passera;

)

Lösenordet som 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 den.

Hur man gör:

/ / First ansluta till bandet databasen
$ Username = "bandUsername";
$ Host = "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");

/ / Tag Nu alla banden från databasen
$ Query = "SELECT * FROM allBands";
$ Band = mysql_query ($ query) or die ("Config Error 2222b");
$ UserRows = mysql_num_rows ($ band);

/ / Nu kan ansluta till SMF db
$ Host = "smfhost", / / Host name
$ Username = "smfuser, / / Mysql användarnamn
$ Mittlösenord = "smfpassword", / / mysql lösenord
$ DB_NAME = "smfdatabase", / / Databas 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 kommer att 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 som inte skulle 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 = explodera ("", $ valid_chars);

/ / Nu måste vi slinga genom varje band

){ för ($ i = 0; $ i <$ userRows, $ i + +) (

($bands)){ if ($ rad = mysql_fetch_assoc ($ band)) (

/ / Extrahera band information
extrakt ($ rad);
/ / Skapa ett lösenord för bandet
$ RealPassword = createRandomPassword ();
/ / Jag väljer att upprepa bandname och lösenord som en del av min felsökning så jag kan se fungerar som det fungerar
echo ("<br/> $ bandName - $ realPassword");
$ NewBand = "";
/ / För varje bokstav i bandet namn vi ska titta 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 trunkera bandnamn
($bandName); $j ++ ){ för ($ j = 0, $ j <strlen ($ bandName), $ j + +) (

($band[$j])); $ Temp = str_replace ($ valid_chars, "X", ($ bandet [strtolower $ j]));
if ($ temp == "X")

$ NewBand = $ newBand. $ Bandet [$ j];

)
/ / Jag upprepar det nya namnet av samma anledning jag upprepa det gamla namnet och lösenord
echo ("- $ newBand");
/ / Vi har det nya bandnamnet .... Nu ska vi börja buliding info vi behöver för att infoga i db ...
$ Medlemsnamn = $ newBand;
$ Realname = $ newBand, / / jag in det riktiga namnet och medlemsnamn samma. Banden kan ändra det om de vill
$ Epostadress = $ bandEmail;
$ WebsiteUrl = $ bandWebsite, / / Eftersom jag har banden webbplatser skulle lika gärna kunna skriva in dem
$ WebsiteTitle = $ newBand;
$ Is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ Password = sha1 (strtolower ($ medlemsnamn). $ RealPassword), / / Lösenord måste vara krypterade

/ / Se till att deras är inte en person med samma namn i SMF databasen. Vi vill inte av misstag komma in någon två gånger
$ Query = "SELECT * FROM smf_members WHERE medlemsnamn = '$ medlemsnamn'";
("Config Error 2222343242b"); $ Result = mysql_query ($ query) or die ("Config Error 2222343242b");
$ NRows = mysql_num_rows ($ result);

/ / Om medlemsnamn finns ingenting
if ($ nRows> 0) ()

else (

/ / Om användaren inte redan anmält sig till forumet, så gör det och skicka ett mail ....
$ Query = "INSERT INTO smf_members (medlemsnamn, realname, Epostadress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ('$ medlemsnamn", "$ realname", "$ Epostadress", "$ is_activated", "$ ID_POST_GROUP" , "$ password", "$ websiteUrl", "$ websiteTitle ')";

("Config Error 2232 "); $ Result = mysql_query ($ query) or die ("Config Error 2232");

/ / Nu måste vi skicka bandet ett e-postmeddelande
$ Till = $ e-postadress;
$ Subject = "Ditt forum användarnamn och lösenord";

/ / Från
$ Header = "från: Me <me@mysite.com>";

/ / Ditt meddelande
$ Message .= "Ditt användarnamn och lösenord anges nedan. Du kan antingen ändra när som helst. Om du inte vill delta i vårt forum, det är inga problem. Bara aldrig logga in och det kommer att bli som om ingenting har hänt. \ r \ n ";
$ Message .= "Användarnamn: $ medlemsnamn Lösenord: $ realPassword \ r \ n";

/ / Skicka e-post
$ Skickat mail = mail ($ till, $ ärendet, $ meddelande, $ header);
if ($ skickat mail)

echo ("- JA!");
/ / Detta är den sista delen av vår eko. Den "-JA!" kommer endast att skrivas ut om ett e-postmeddelande skickas. Så en fullständig utskrift linje kommer att se ut ungefär så här:
/ / Adam Strife - 4s6vsxag - AdamStrife - JA!

)

)
)

Hur man manuellt in en användare till ett SMF forum Använda PHP

Publicerad i SMF (Enkel Machine Forum) , php genom ShortLikeAFox den 28 Juli 2008

Detta specifika exempel är för SMF 1.1.5. Jag kan inte garantera det kommer att fungera med någon annan version.

Så du kör Enkel Maskin Forum Software och manuellt vill ange ett användarnamn? Inga problem. Jag vet att detta problem verkar mycket specifika, men de idéer som beskrivs här kan anpassas till andra typer av forum och andra databasdrivna-program som Wordpress. Innan vi hamnar i exakt hur man gör detta, låt oss ta en titt på hur Enkel Machine Forum håller reda på användarna. I SMF databasen finns en tabell som kallas smf_members. Den smf_members struktur ser ut så här:

Fält Typ Null

Nyckel Standard Extra
ID_MEMBER mediumint (8) unsigned NEJ PRI NULL AUTO_INCREMENT
medlemsnamn Varchar (80) NEJ MUL
dateRegistered int (10) unsigned NEJ MUL 0
inlägg mediumint (8) unsigned NEJ MUL 0
ID_GROUP smallint (5) unsigned NEJ MUL 0
lngfile tinytext NEJ MUL
lastLogin int (10) unsigned NEJ MUL 0
realname tinytext NEJ
Chatt smallint (5) NEJ 0
unreadMessages smallint (5) NEJ 0
buddy_list text NEJ
pm_ignore_list text NEJ
messageLabels text NEJ
passwd Varchar (64) NEJ
Epostadress tinytext NEJ
personalText tinytext NEJ
kön tinyint (4) unsigned NEJ 0
födelsedatum datum NEJ MUL 0001-01-01
websiteTitle tinytext NEJ
websiteUrl tinytext NEJ
plats tinytext NEJ
ICQ tinytext NEJ
MÅL Varchar (16) NEJ
YIM Varchar (32) NEJ
MSN tinytext NEJ
hideEmail tinyint (4) NEJ 0
showOnline tinyint (4) NEJ 1
TIMEFORMAT Varchar (80) NEJ
namnteckning text NEJ
timeOffset flyta NEJ 0
Avatar tinytext NEJ
pm_email_notify tinyint (4) NEJ 0
karmaBad smallint (5) unsigned NEJ 0
karmaGood smallint (5) unsigned NEJ 0
usertitle tinytext NEJ
notifyAnnouncements tinyint (4) NEJ 1
notifyOnce tinyint (4) NEJ 1
notifySendBody tinyint (4) NEJ 0
notifyTypes tinyint (4) NEJ 2
memberIP tinytext NEJ
memberIP2 tinytext NEJ
secretQuestion tinytext NEJ
secretAnswer Varchar (64) NEJ
ID_THEME tinyint (4) unsigned NEJ 0
is_activated tinyint (3) unsigned NEJ 1
validation_code Varchar (10) NEJ
ID_MSG_LAST_VISIT int (10) unsigned NEJ 0
additionalGroups tinytext NEJ
smileySet Varchar (48) NEJ
ID_POST_GROUP smallint (5) unsigned NEJ MUL 0
totalTimeLoggedIn int (10) unsigned NEJ 0
passwordSalt Varchar (5) NEJ

Områden vi måste uppmärksamma:

  • medlemsnamn - Self Explanitory.
  • dateRegistered - Är inte nödvändigt, men om inte fyllt i det datum som registrerats visas som 31 December 1969. Datumet sparas som en epok tidsstämpel. Vet inte hur man beräknar tidsstämplar i ditt huvud? Inga problem. Jag använder den fria generator finns här .
  • Riktigt namn - bör införas. När jag inte är säker på att jag bara upprepa medlemsnamn här.
  • Epostadress - Self Explanitory.
  • is_activated - Måste vara satt till 1 eftersom vi manuellt aktivera en medlem.
  • ID_POST_GROUP - Jag kommer inte att ljuga. Jag är inte säker på vad det är, men det tycks alltid vara inställd på 4. Så .... Jag alltid det till 4. Inte det bästa sättet att programmet, men vad kan du göra?
  • passwd - Det lösenord du vill ge den nya användaren. Det är omöjligt att räkna ut hur till komma in utan att titta på SMF dokumentation. Rätt kod för att kryptera ett SMF lösenord för databasen ser ut så här:

($memberName).$password) $ Passwd = sha1 (strtolower ($ medlemsnamn). $ Password)

I ovanstående kodrad är $ password användarens faktiska lösenord.

Hur man gör:

/ / Anslut först till SMF databasen

$ Host = "hostname", / / Host name
$ Username = "användarnamn", / / Mysql användarnamn
$ Mittlösenord = "lösenord", / / mysql lösenord
$ DB_NAME = "användarnamn", / / Databas 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");

$ Medlemsnamn = "Ironman";
$ Realname = "Tony Stark";
$ Epostadress = "ironMan@ironMan.com";
$ Is_activated = 1;
$ ID_POST_GROUP = 4;

$ Password = "Tony1234";

($memberName).$password); $ Password = sha1 (strtolower ($ medlemsnamn). $ Password);

$ DateRegistered = 1216951200, / / 2008/07/25 02:00

$ Query = "INSERT INTO smf_members (medlemsnamn, realname, Epostadress, is_activated, ID_POST_GROUP, passwd, dateRegistered) VALUES ('$ medlemsnamn", "$ realname", "$ Epostadress", "$ is_activated", "$ ID_POST_GROUP", " $ password "," $ dateRegistered ') ";
("SMF Error 101.234 "); $ Result = mysql_query ($ query) or die ("SMF Fel 101,234");

Det är allt som finns till den!