Arkiv för SMF (Simple Machine Forum)

Hur man hjälper användarna att enkelt bädda in videoklipp på ett SMF webbplats

Publicerad i SMF (Simple Machine Forum) av ShortLikeAFox den 10 aug, 2008

Så du är ansvarig för att upprätta ett Simple Machines Forum på plats, och vill ha ett idiotsäkert sätt att göra det möjligt för användare att bädda in video från populär video webbplatser (YouTube, Google Video, IGN, etc.). Du kan med rätta vara rädd för att ge användarna möjlighet att enkelt använda bädda in kod från de enskilda webbplatser, eftersom Gud vet vad resultatet kommer att bli. Lösningen på detta problem är lika enkelt som kan. Karl Benson skrev en ändring paket som gör video bädda in så enkelt som att klippa ut och klistra in webbadressen till sidan videon visas i. Detta paket fungerar i över 150 webbplatser och kallas AEVAC (Audio Bädda in video / audio-klipp). Den senaste versionen är version 3.1.2 och finns här.

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

| Kommentarer

Hur du manuellt infoga en grupp av användare i ett SMF forum använder PHP

Publicerad i SMF (Simple Machine Forum), php av ShortLikeAFox den 30 juli 2008

Denna handbok förutsätter att du känner till min post: Hur att skjuta in en användare till ett SMF Forum Använda PHP.

Jag har nyligen inför utmaningen att flytta 800-tal band från en databas i ett SMF forum. Jag står inför ett par problem vid övergången att jag inte täcka i första inlägget:

  1. Bandet namn inte är garanterat säkra för en karaktär av karaktär flytta in i SMF databas. Så någon form av namn ändra funktion var tvungen att vara anställd.
  2. De band som 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 de band i forumet gick lite så här:

Öppna Band databas

för varje (Band) (

Skapa 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 från bandet databas som var användbara ingår: bandName, bandEmail, och bandWebsite

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

funktion createRandomPassword () (

$ tecken = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand ((dubbel) 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 för mitt ändamål. Alla lösenord generation funktion skulle fungera bra här. Jag valde den här eftersom det skulle vara lätt för medlemmarna att komma ihåg om de valde att inte ändra det.

Hur man gör:

/ / Du först 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") eller dö ( "inte kan ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") eller dö ( "kan inte välja BF");

/ / Nu är alla roffa åt sig av 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 namn
$ username = "smfuser, / / Mysql användarnamn
$ mittlösenord = "smfpassword", / / Mysql lösenord
$ db_name = "smfdatabase", / / Database namnet

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mittlösenord") eller dö ( "inte kan ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") eller dö ( "kan inte välja BF");

/ / $ 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 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 = explodera ( "", $ valid_chars);

/ / Nu måste vi loop genom varje band

){ for ($ i = 0; $ i <$ userRows, $ i + +) (

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

/ / Utdrag bandet 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 och så jag kan se det fungera som det fungerar
echo ( "<br/> $ bandName - $ realPassword");
$ newBand = "";
/ / För varje bokstav i bandet namn som 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 bandet namn
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandName), $ j + +) (

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

$ newBand = $ newBand. $ bandet [$ j];

)
/ / Jag upprepar det nya namnet för samma anledning vill jag upprepa det gamla och lösenord
echo ( "- $ newBand");
/ / Vi har den nya Band namn .... Nu börjar buliding den information vi behöver för att infoga i db ...
$ memberName = $ newBand;
$ realname = $ newBand, / / jag in den riktiga namn och medlem namn samma. De band som kan ändra det om de vill
$ Epostadress = $ bandEmail;
$ websiteUrl = $ bandWebsite, / / Eftersom jag har bandets hemsida skulle lika gärna kunna skriva in dem
$ websiteTitle = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ lösenord = SHA1 (strtolower ($ memberName). $ realPassword), / / Lösenord måste vara krypterad

/ / Se till att deras så klart inte medlem med samma namn i SMF databas. Vi vill inte oavsiktligt kommer 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 ($ resultat);

/ / Om ledamot namn finns inte göra något
if ($ nRows> 0) ()

else (

/ / Om användaren inte redan registrerat dig för det forum, göra det och skicka ett mail ....
$ query = "infoga i smf_members (memberName, realname, Epostadress, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) värden (" $ 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 e-postmeddelande
$ till = $ Epostadress;
$ Ämne = "Ditt forum användarnamn och lösenord";

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

/ / Ditt meddelande
$ meddelande .= "Din inloggning och lösenord är listade nedan. Du kan ändra antingen när som helst. Om du inte vill delta i vårt forum, det är inga problem. Precis aldrig logga in och det blir inget hänt . \ r \ n ";
$ meddelande .= "Username: $ memberName Lösenord: $ realPassword \ r \ n";

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

echo ( "- JA!");
/ / Detta är den sista delen av vår eko. Den "-JA!" kommer endast 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!

)

)
)

| Kommentarer

Hur du manuellt infoga en användare i ett SMF forum använder PHP

Publicerad i SMF (Simple Machine Forum), php av ShortLikeAFox den 28 juli 2008

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

Så du kör Simple Machine Forum Software och vill ange en användare? 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 databas drivs programvarupaket som Wordpress. Innan vi får till exakt hur man gör detta, låt oss ta en titt på hur Simple Machine Forum håller reda på användarna. I SMF databas 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) osignerade NEJ PRI NULL auto_increment
memberName Varchar (80) NEJ MUL
dateRegistered int (10) osignerade NEJ MUL 0
tjänster mediumint (8) osignerade NEJ MUL 0
ID_GROUP smallint (5) osignerade NEJ MUL 0
lngfile tinytext NEJ MUL
lastLogin int (10) osignerade NEJ MUL 0
realname tinytext NEJ
chattmeddelanden 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) osignerade NEJ 0
Födelsedatum datum NEJ MUL 0001-01-01
websiteTitle tinytext NEJ
websiteUrl tinytext NEJ
plats tinytext NEJ
ICQ tinytext NEJ
AIM Varchar (16) NEJ
YIM Varchar (32) NEJ
MSN tinytext NEJ
hideEmail tinyint (4) NEJ 0
showOnline tinyint (4) NEJ 1
Tidsformat Varchar (80) NEJ
signatur text NEJ
timeOffset float NEJ 0
avatar tinytext NEJ
pm_email_notify tinyint (4) NEJ 0
karmaBad smallint (5) osignerade NEJ 0
karmaGood smallint (5) osignerade 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) osignerade NEJ 0
is_activated tinyint (3) osignerade NEJ 1
validation_code Varchar (10) NEJ
ID_MSG_LAST_VISIT int (10) osignerade NEJ 0
additionalGroups tinytext NEJ
smileySet Varchar (48) NEJ
ID_POST_GROUP smallint (5) osignerade NEJ MUL 0
totalTimeLoggedIn int (10) osignerade NEJ 0
passwordSalt Varchar (5) NEJ

Områden som vi måste uppmärksamma:

  • memberName - Self Explanitory.
  • dateRegistered - är inte nödvändigt, men om inte fyllt i datum registreras visas som den 31 december 1969. I dag sparas som en epok tidsstämpel. Vet inte hur man kan beräkna tidstämplar i ditt huvud? Inga problem. Jag använder den fria generator hittar du här.
  • realname - bör införas. När jag inte är säker på att jag bara upprepa memberName här.
  • Epostadress - Self Explanitory.
  • is_activated - måste sättas till 1 eftersom vi manuellt aktivera en medlem.
  • ID_POST_GROUP - Jag ska inte ljuga. Jag är inte säker på vad det är, men det verkar alltid vara inställd på 4. Så .... Jag har alltid ställa in den till 4. Inte det bästa sättet att programmera, men vad ska man göra?
  • passwd - Det lösenord du vill ge den nya användaren. Det är omöjligt att lista ut hur du 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 ($ memberName). $ lösenord)

I ovanstående rad kod, $ lösenord är användarens faktiska lösenord.

Hur man gör:

/ / First, ansluta till SMF databas

$ värd = "hostname", / / Host namn
$ username = "användarnamn", / / Mysql användarnamn
$ mittlösenord = "lösenord", / / Mysql lösenord
$ db_name = "användarnamn", / / Database namnet

("cannot connect to server"); mysql_connect ( "$ host", "$ username", "$ mittlösenord") eller dö ( "inte kan ansluta till servern");
("cannot select DB"); mysql_select_db ( "$ db_name") eller dö ( "kan inte välja BF");

$ memberName = "ironMan";
$ realname = "Tony Stark";
$ Epostadress = "ironMan@ironMan.com";
$ is_activated = 1;
$ ID_POST_GROUP = 4;

$ lösenord = "Tony1234";

($memberName).$password); $ lösenord = SHA1 (strtolower ($ memberName). $ password);

$ dateRegistered = 1216951200; / / 7-25-2008 2 AM

$ query = "infoga i smf_members (memberName, realname, Epostadress, is_activated, ID_POST_GROUP, passwd, dateRegistered) värden (" $ memberName "," $ realname "," $ Epostadress', '$ is_activated "," $ ID_POST_GROUP "," $ lösenord "," $ dateRegistered ")";
("SMF Error 101.234 "); $ result = mysql_query ($ query) eller dö ( "SMF Fel 101.234");

Det är allt till det!

| Kommentarer