Gå til innhold

phpBB login, "ekstern login"


Anbefalte innlegg

Ser det er mangen som har prøvd på det samme som meg, nemlig å la phpBB forumet bli en del av nettsiden, med felles login.

 

siden er satt opp på www.discoverylan.net... håper noen kan hjelpe meg

forumet finnes på www.discoverylan.net/forum

 

Etter litt kikking i phpBB sin kode fant jeg følgende: (fil: login.php)

 

if( md5($password) == $row['user_password'] && $row['user_active'] )
 {
 $autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;

 $admin = (isset($HTTP_POST_VARS['admin'])) ? 1 : 0;
 $session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin);

 if( $session_id )
   {
   $url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "index.$phpEx";
   redirect(append_sid($url, true));
   }
 else
   {
   message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__);
   }
 }

 

Dette er nok selve punktet hvor sessions blir satt. Jeg er ikke helt trygg på beina når det gjelder hardcore php koding enda, så jeg sjekket litt opp på nettet om det fantes ferdige script til dette. Etter litt søking fant jeg dette:

 

/* Example 1: Logging in */

session_start();

/* First, login the user using your own login system, for example; */
$user = new User();

// username and password are implied here,
// they will most likely be form variables
$user->login( $username, $password );

// Then login the user to the forum
$phpBB = new PHPBB_Login();

$phpbb->login( $user->id );

 

class PHPBB_Login {

   function PHPBB_Login() {
   }

   function login( $phpbb_user_id ) {
       global $db, $board_config;
       global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
   
       // Setup the phpbb environment and then
       // run through the phpbb login process

       // You may need to change the following line to reflect
       // your phpBB installation.
       require_once( './forum/config.php' );
   
       define('IN_PHPBB',true);

       // You may need to change the following line to reflect
       // your phpBB installation.
       $phpbb_root_path = "./forum/";
       
       require_once( $phpbb_root_path . "extension.inc" );
       require_once( $phpbb_root_path . "common.php" );

       return session_begin( $phpbb_user_id, $user_ip, PAGE_INDEX, FALSE, TRUE );
   
   }
}

 

Ut fra dette må det nå være mulig for meg å få til en liten login.php fil med et input felt og en submit button, men der tok jeg feil. Jeg gikk inn i MySQL databasen og sjekket opp hva tabellen phpbb_users inneholder. Første felt i tabellen er "user_id" og inneholder en unik bruker id, i form av tall. Jeg sjekket opp min eksisterende konto, som da har user_id = 70 (test konto med brukernavn "testuser").

 

Kjapp liten side jeg laget:

 

<?php
session_start();
if($login == true)
  {
  global $db, $board_config;
  global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

  // Setup the phpbb environment and then
  // run through the phpbb login process

  // You may need to change the following line to reflect
  // your phpBB installation.
  require_once( './forum/config.php' );

  define('IN_PHPBB',true);

  // You may need to change the following line to reflect
  // your phpBB installation.
  $phpbb_root_path = "./forum/";

  require_once( $phpbb_root_path . "extension.inc" );
  require_once( $phpbb_root_path . "common.php" );

  session_begin( $phpbb_user_id, $user_ip, PAGE_INDEX, FALSE, TRUE );

  echo "ok";
  }
?>
<html>
<head>
 <title>login</title>
</head>
<body>
 <form name="login" method="post">
  <input type="text" name="phpbb_user_id" size="10">
  <input type="hidden" name="login" value="true">
  <input type="submit" value="login">
 </form>
</body>
</html>

 

Siden finnes her: www.discoverylan.net/login.php

 

Dersom jeg har forstått dette rett så burde jeg nå kunne skrive inn user_id'en som er "70" i input feltet, klikke på "login" og krysse fingrene mine. Men der tok jeg feil. Når jeg nå åpner forumet på www.discoverylan.net/forum så er jeg ikke logget inn.

 

Ut fra det jeg har funnet av phpBB koder til nå så bør det være noen her som ser litt mer logisk tankegang i dette scriptet enn meg :p Og, ja, jeg er klar over at jeg ikke har tenkt på sikkerhet og faktisk sjekke opp eksisterende brukernavn i databasen osv. Det jeg sliter med er å forstå HVA phpBB setter i sessions.

 

Blir utrolig glad om noen kan hjelpe meg med dette, og jeg vil tro det er flere som lurer på det samme.

Lenke til kommentar
Videoannonse
Annonse
Ser det er mangen som har prøvd på det samme som meg, nemlig å la phpBB forumet bli en del av nettsiden, med felles login.

 

siden er satt opp på www.discoverylan.net... håper noen kan hjelpe meg

forumet finnes på www.discoverylan.net/forum

 

Etter litt kikking i phpBB sin kode fant jeg følgende: (fil: login.php)

 

if( md5($password) == $row['user_password'] && $row['user_active'] )
 {
 $autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;

 $admin = (isset($HTTP_POST_VARS['admin'])) ? 1 : 0;
 $session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin);

 if( $session_id )
   {
   $url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "index.$phpEx";
   redirect(append_sid($url, true));
   }
 else
   {
   message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__);
   }
 }

 

Dette er nok selve punktet hvor sessions blir satt. Jeg er ikke helt trygg på beina når det gjelder hardcore php koding enda, så jeg sjekket litt opp på nettet om det fantes ferdige script til dette. Etter litt søking fant jeg dette:

 

/* Example 1: Logging in */

session_start();

/* First, login the user using your own login system, for example; */
$user = new User();

// username and password are implied here,
// they will most likely be form variables
$user->login( $username, $password );

// Then login the user to the forum
$phpBB = new PHPBB_Login();

$phpbb->login( $user->id );

 

class PHPBB_Login {

   function PHPBB_Login() {
   }

   function login( $phpbb_user_id ) {
       global $db, $board_config;
       global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;
   
       // Setup the phpbb environment and then
       // run through the phpbb login process

       // You may need to change the following line to reflect
       // your phpBB installation.
       require_once( './forum/config.php' );
   
       define('IN_PHPBB',true);

       // You may need to change the following line to reflect
       // your phpBB installation.
       $phpbb_root_path = "./forum/";
       
       require_once( $phpbb_root_path . "extension.inc" );
       require_once( $phpbb_root_path . "common.php" );

       return session_begin( $phpbb_user_id, $user_ip, PAGE_INDEX, FALSE, TRUE );
   
   }
}

 

Ut fra dette må det nå være mulig for meg å få til en liten login.php fil med et input felt og en submit button, men der tok jeg feil. Jeg gikk inn i MySQL databasen og sjekket opp hva tabellen phpbb_users inneholder. Første felt i tabellen er "user_id" og inneholder en unik bruker id, i form av tall. Jeg sjekket opp min eksisterende konto, som da har user_id = 70 (test konto med brukernavn "testuser").

 

Kjapp liten side jeg laget:

 

<?php
session_start();
if($login == true)
  {
  global $db, $board_config;
  global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

  // Setup the phpbb environment and then
  // run through the phpbb login process

  // You may need to change the following line to reflect
  // your phpBB installation.
  require_once( './forum/config.php' );

  define('IN_PHPBB',true);

  // You may need to change the following line to reflect
  // your phpBB installation.
  $phpbb_root_path = "./forum/";

  require_once( $phpbb_root_path . "extension.inc" );
  require_once( $phpbb_root_path . "common.php" );

  session_begin( $phpbb_user_id, $user_ip, PAGE_INDEX, FALSE, TRUE );

  echo "ok";
  }
?>
<html>
<head>
 <title>login</title>
</head>
<body>
 <form name="login" method="post">
  <input type="text" name="phpbb_user_id" size="10">
  <input type="hidden" name="login" value="true">
  <input type="submit" value="login">
 </form>
</body>
</html>

 

Siden finnes her: www.discoverylan.net/login.php

 

Dersom jeg har forstått dette rett så burde jeg nå kunne skrive inn user_id'en som er "70" i input feltet, klikke på "login" og krysse fingrene mine. Men der tok jeg feil. Når jeg nå åpner forumet på www.discoverylan.net/forum så er jeg ikke logget inn.

 

Ut fra det jeg har funnet av phpBB koder til nå så bør det være noen her som ser litt mer logisk tankegang i dette scriptet enn meg :p Og, ja, jeg er klar over at jeg ikke har tenkt på sikkerhet og faktisk sjekke opp eksisterende brukernavn i databasen osv. Det jeg sliter med er å forstå HVA phpBB setter i sessions.

 

Blir utrolig glad om noen kan hjelpe meg med dette, og jeg vil tro det er flere som lurer på det samme.

5208719[/snapback]

 

Hei, Nøyaktig HVA er det du ønsker å gjøre? Automatisk logge inn en bruker når han trykker på forum-linken?

Lenke til kommentar

takker for kjappt svar vertfall...

 

Jeg holder på å lage et bruker system på Discovery siden som krever login, og siden jeg er perfeksjonist, eller prøver å være, så syntes jeg det er unødvendig med en egen login til forumet.

 

Jeg vil lage en login på Discovery siden som setter en sessions, hvor sessions blir kontrollert på alle sider og gir brukeren tilgang til "sine sider" og andre bruker sider.

 

For å gjøre det hele en del enklere har jeg bestemt meg for å enkelt og greit sette den session infoen som phpBB bruker i forumet. Når brukeren logger inn på Discovery, så blir han også automatisk logget inn på phpBB, eller sessionen er også en "gyldig" login for phpBB forumet når han åpnet det, for å forklare det på den måten.

 

Jeg har bygget om registreringsskjemaet til phpBB, hvor jeg lagrer user_id og passord i phpbb_users tabellen som phpBB forumet normalt sett bruker. Ekstra tilleggs info har jeg lagret i en egen tabell.

 

Det hele burde være en smal sak for en person med litt god forståelse for php hvordan man setter en session som fungerer sammen med phpBB.

 

Forsto du mer nå, eller snakker jeg rundt meg selv?

Lenke til kommentar

Da er jeg med.

 

Uten å ha satt meg inn i hele BB-koden må jeg si at jeg tror hemmeligheten du leter etter ligger i linjen

 

$session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin);

 

Her får du en session_id tilbake fra BB som brukes videre i prosessen. Det er denne du må opprette og sjekke om eksisterer til enhver tid i begynnelsen på alle php-filene dine. Mulig denne også lagres i databasen slik at du kan hente den derifra og sammenligne med session-id som blir overført mellom sidene. For å finne ut dette må du egentlig dissekere koden i session_begin rutinen.

 

Etter denne koden har du en redirect til siden index.php som jeg regner med er startsiden for forumet. Det er denne du må linke til i forum-linken for å komme til brukerens riktige side.

 

Du kan på en måte si at du må skyte inn din egen kode mellom session-id koden i denne filen og redirect-koden i denne filen.

 

Å ta en titt på index.php kan også være lurt for å finne ut hvordan phpBB kontrollerer at sessionid'en stemmer mellom sidene.

 

Med litt forsking finner du det sikkert ut.

 

Lykke til.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...