Nu har jag äntligen lärt mig något nytt som PHP-programmerare och tänkte försöka dela med mig av min kunskap. Det jag tänkte skriva om idag är internets vanligaste programvara för forum. Mjukvaran heter PhpBB där BB står för Bulletin Board och koden är skriven i PHP med öppen källkod.
Att starta ett forum på det här sättet är jätteenkelt. Själva installationen består i av att packa upp en zip-fil och lägga på sin webbserver. Därefter finns en webbaserad guide som tar dig igenom installationsprocessen. Om du bara har koll på strukturen på din webbserver och hur man ansluter till webbhotellets databas så ska det inte vara några problem. Efter installationen finns 100-tals alternativ att välja bland för att få precis det forumet du vill ha.
Jag har sedan tidigare haft två PhpBB-forum. En för mitt korplags hemsida och en på företaget jag jobbar för, Winlas. Korplagets forum var dock inte använt på några år eftersom webbsidan i sig var så pass avancerad att det inte riktigt kändes att det behövdes. Nu hade jag däremot ambitionen att få till ett nytt forum som skulle vara mer integrerat i hemsidan och därmed förhoppningsvis användas i högre utsträckning. PhpBB har moddar och öppen källkod så att det ska gå att integrera den i din hemsida. De här modifikationerna ville jag göra:
- · Integrera inloggningen med behörighetssystemet på huvudsidan.
- · Exportera användarlistan från hemsidan och skapa samma användare, med samma lösenord i forumet.
- · Stänga forumet så att inga nya användare kan registrera sig. Jag använder användarlistan så att spelare kan registrera sig till träningar och matcher och vill inte ha in användare jag inte har koll på.
- · Visa senaste inläggen på forumet bland nyheterna på startsidan. Nyhetsfeeden är blandad i datum- och tidsordning där t.ex. matchresultat, info om träningar, blogginlägg och träningstider blandas. Användarna får själva välja vilken typ av inlägg de vill se genom en filtreringsfunktion.
Logga in på forumet ifrån startsidan på webbplatsen
Min inloggningsfunktion på startsidan var tidigare inte helt säker och lite ostabil. Jag tog därför tidigt beslutet att helt ersätta den gamla inloggningen med forumets inloggning. En sak som är bra med PhpBB och att det är så spritt och används av många webbutvecklare. Därför är det lätt att googla fram svar på vad man än kan tänkas fråga om. Inloggningsformuläret är bara några enkla input-rutor som skickar post-information till en funktion på forumet. Man behöver skicka med inloggningsnamn, lösenord, vilken sida användaren ska dirigeras till och om användaren vill fortsätta vara inloggad. Längst upp på sidan med inloggningsformuläret behöver man dessutom skapa en klass som skapar en session. Jag hade inga större problem så här långt. Tänk bara på att sidan man ska hamna på efter att loggat in dröjer några sekunder innan den laddas, då man först ser en bekräftelse på forumet att man har loggat in. På varje sida som ska kontrollera inloggningsstatus behöver man inkludera forumklassen. Jag lade den koden i en egen fil som jag includar längst upp på varje sida där det behövs.
Exportera en användartabell till forumets databas
Den här funktionen finns inte i ursprungliga forumet, utan jag var tvungen att hämta en expansionsmodul som kan stoppa in data ifrån en csv-fil i databasen.
Jag använda det här verktyget: http://www.phpbb.com/community/viewtopic.php?f=65&t=1494875
CSV-listan skapade jag genom en databasfråga där jag manuellt skrev ut semikolon och avskiljare i en while-loop ifrån den data sql-frågan generarade. Jag tänkte behålla den gamla databastabellen och har en dubbel uppsättning av användartabeller. PhpBBs inbyggda för inloggning i forumet/på hemsidan och den gamla som fortfarande lagrar behörighet och kopplingen till spelarprofilen. För att länka ihop tabellerna har jag en SQL-fråga på varje sida, där själva användarnamnet är främmande nyckel och länkar ihop tabellerna.
Stänga forumet för nya användare
Att inaktivera nyregistrering var det lättaste steget i min integration. Det finns en kryssruta när man loggar in som administratör på forumet under Allmänt -> Inställningar för användarregistrering och bocka för ”Inaktivera registrering” bland alternativen för kontoregistrering.
Visa senaste foruminläggen på hemsidans startsida
För att få till en full integration mellan hemsida och forum var det en viktig del att integrera senaste händelserna på forumet i nyhetsflödet på startsidan. Flödet består av en databastabell där jag manuellt sparat en post varje gång någon ny information sparas på hemsidan. Det finns för tillfället 23 olika typer av händelser. Att lägga in ytterligare en databaspost varje gång någon skriver ett inlägg i forumet var för avancerat då jag var tvungen att ändra för mycket i källkoden. Jag gick istället en enklare väg, med PHP-programmering som jag kan och är bra på: Databasfrågor och arrayer. Senaste inlägget sparas i en egen databastabell och går att söka upp med en relativt enkel SQL-fråga som sorteras efter tidpunkt inlägget skrevs. Jag får sedan fram hela det önskade dataflödet genom att först mellanlagra resultatet från SQL-frågan som hämtar ut loggen i en array, sedan lägga till arrayen med senaste poster i forumet och tillslut sortera arrayen efter datum och tidordning. Kanske inte en helt ulitmat lösning, men det fungerar och slutresultatet ser bra ut.
Nu blev det här mycket en beskrivning om hur min webbsida fungerar, men jag hoppas att någon hittar något som går att tillämpa på erat projekt. Det går att göra jättemycket med PhpBB-forum och det finns jättemycket information bara en Google-sökning bort.