Läsa PHPBB-session utanför PHPBB?

Frågor kring MODdar (modifikationer) för phpBB 3 (3.0.0 eller senare).

Moderatorer: Supportgrupp, Moderatorgrupp

Skriv svar
hybris
Ny medlem
Ny medlem
Inlägg: 3
Blev medlem: 2009-11-01 17:37
Svar: 0

Läsa PHPBB-session utanför PHPBB?

Inlägg av hybris »

Hej!
Jag försöker infoga PHPBB-sessionen över hela min sajt, så att användarna bara behöver logga in på forumet, för att använda den inloggningen även till andra program.

Tänkte därför att det skulle vara en enkel sak att helt enkelt läsa cookien som PhpBB satt och sedan verifiera den mot databasens innehåll, för att spotta ut användarens namn. Existerar sessionen får man användarens namn som svar, existerar den inte kan man klassa användaren som inte inloggad.
Men så enkelt var det tydligen inte.
Hittar ingen dokumentation någonstans som avslöjar hur man ska gå till väga och var i databasen man ska kolla.

Provade därför med följande snabbkod som PhpBB själva föreslog;

Kod: Markera allt

<?php
define('IN_PHPBB', true);
$phpbb_root_path = 'serverkatalogen';
$phpEx = 'php';
include('common.php');
$user->session_begin();
$auth->acl($user->data);
$user->setup();
   echo '' . $user->data['username_clean'];
?>
Detta spottar mycket riktigt ut användarens namn, men bara om scriptet körs direkt, inte om det läses från ett tredjepartsprogram i Perl, trots att det är på samma sajt genom tex;

Kod: Markera allt

my $output = `php loginornot.php`;
Det fungerar, men genererar enbart "anonymous" som användarnamn.
Troligtvis beroende på att PHP-scriptet inte blir matat med besökarens cookies, då PHP-scriptet körs internt på server, anropat inifrån Perl-scriptet.

Jag uppskattar därför alla tips och hjälp ni kan erbjuda om hur man ska dela session över program/programspråk.
Användarens profilbild
egetforum.se
Gammal medlem
Gammal medlem
Inlägg: 90
Blev medlem: 2006-01-20 18:15
Svar: 0

Re: Läsa PHPBB-session utanför PHPBB?

Inlägg av egetforum.se »

Varför kör du inte php på hela siten? Jag tror det vara rätt invecklat annars.
Administratör för EgetForum.se
hybris
Ny medlem
Ny medlem
Inlägg: 3
Blev medlem: 2009-11-01 17:37
Svar: 0

Re: Läsa PHPBB-session utanför PHPBB?

Inlägg av hybris »

För att resten av allt på sajten är i Perl, bara forumet som kommit till i PHP, så det skulle bli mer invecklat att emigrera allt till PHP.

Ersatte dock baletten ovanför med ett SQL-kommando;
SELECT session_user_id, username FROM phpbb3_sessions, phpbb3_users WHERE session_user_id = user_id and session_id = $session_id_cookie
Funkar utmärkt när man har en färsk phpBB-session matad i kakorna.

Problem nummer två blir dock att sessionen inaktiveras ibland utanför forumet, vilket leder till att man får besöka forumet för att refresha cookien igen. Utan att behöva logga in på nytt dock.

Någon som har någon aning om vad som händer och varför session_id:n försvinner från tabellen?
Kan man utnyttja session-nyckeln (key) för att hämta sessionen på nytt manuellt, eller vad är det phpBB gör som min SQL-förfrågan misslyckas med ibland?
Användarens profilbild
egetforum.se
Gammal medlem
Gammal medlem
Inlägg: 90
Blev medlem: 2006-01-20 18:15
Svar: 0

Re: Läsa PHPBB-session utanför PHPBB?

Inlägg av egetforum.se »

Hade siten varit i Python hade jag nog inte sagt något, men perl lär ju vara som jag ser det betydligt svårare. Vi får se om någon har någon lösning, men personligen tror jag att det blir väldigt lurigt. Jag har hållt på med webben dom sista 15 åren och jag har sett perl komma och även gå, utan att jag någonsin började eller slutade i princip att köra perl. Vissa statistik och andra program har varit i perl, jag har provat dom och sedan valt att koncentrera mig på det som jag tror på, dvs, ruby on rails, php och python. Det är inte för inte som Google kör Python.

Mitt tips är att du slänger perl medan tid är och bygger om siten i ett modernare språk, typ php5, jquery och ajax.
Administratör för EgetForum.se
hybris
Ny medlem
Ny medlem
Inlägg: 3
Blev medlem: 2009-11-01 17:37
Svar: 0

Re: Läsa PHPBB-session utanför PHPBB?

Inlägg av hybris »

Man kan nog prata om språkpreferenser hur länge som helst, men just PHP och ASP ser jag fortfarande som totalt underlägsna Perl, både kraftmässigt och hastighetsmässigt. Utvecklar dock nya sajter i just Ruby on Rails, mest för att det är det nya språk som snappat upp många fördelar från Perl, men det konverterar dock inte den gällande 10 år gamla sajtens innehåll.

Tillbaka till frågan - ingen som är insatt i hur sessionhanteringen fungerar rent praktiskt i phpBB?
Det _borde_ ju, rent praktiskt, vara möjligt att läsa av och bibehålla en session genom avläsning av cookies och kommunikation med mySQL-databasen. Den stora frågan är bara vad som händer när sessionen går i dvala och försvinner från tabellen, fast fortfarande verkar aktiv.
Användarens profilbild
Kail
Administratör
Administratör
Inlägg: 2937
Blev medlem: 2003-06-03 14:53
Svar: 0

Re: Läsa PHPBB-session utanför PHPBB?

Inlägg av Kail »

Sessionshantering sköts både av PHP och webbservern. PHP-tolken är alltså inte "sessionsmedveten". Jag föreslår du utvecklar en web service för att skicka sessionsdata mellan phpBB och ditt Perl-program.
Jakob Persson - Grundare av phpBB Sverige - IT-konsult - http://www.jakob-persson.com
The Complete phpBB Template Design Guide (phpBB 2.x): http://archive.jakob-persson.com/articl ... index.html
Användarens profilbild
copy112
Extra aktiv medlem
Extra aktiv medlem
Inlägg: 205
Blev medlem: 2007-12-13 18:08
Svar: 0

Re: Läsa PHPBB-session utanför PHPBB?

Inlägg av copy112 »

hybris skrev:För att resten av allt på sajten är i Perl, bara forumet som kommit till i PHP, så det skulle bli mer invecklat att emigrera allt till PHP.

Ersatte dock baletten ovanför med ett SQL-kommando;
SELECT session_user_id, username FROM phpbb3_sessions, phpbb3_users WHERE session_user_id = user_id and session_id = $session_id_cookie
Funkar utmärkt när man har en färsk phpBB-session matad i kakorna.

Problem nummer två blir dock att sessionen inaktiveras ibland utanför forumet, vilket leder till att man får besöka forumet för att refresha cookien igen. Utan att behöva logga in på nytt dock.

Någon som har någon aning om vad som händer och varför session_id:n försvinner från tabellen?
Kan man utnyttja session-nyckeln (key) för att hämta sessionen på nytt manuellt, eller vad är det phpBB gör som min SQL-förfrågan misslyckas med ibland?
Ett väldigt enkelt och ganska fult sätt, är att helt enkelt skapa en iframe, eller javascript request ifall din sql sats inte hittar användarens session i databasen. När den sedan har laddats, så kan du ladda om sidan och användaren är inloggad. Detta är ingen trevlig lösning, men den fungerar.

Ifall du vill ha en trevligare system, så hittade jag denna artikel http://wiki.phpbb.com/Non-PHP_Integration.

En egen lösning, är att modifiera phpBB's inloggning system för att skicka en extra sql sats till din egen tabell, samt skapa en cookie som verifierar den. Därefter kan du enkelt hämta den från ditt system, utan att phpBB raderar den.

Lycka till, och håll oss uppdaterade.
Har inte så mycket tid över, men tittar in lite då och då.
Skriv svar

Vilka är online

Användare som besöker denna kategori: 1 och 0 gäst