2011-11-10 15 views

risposta

8

si wil Ho bisogno di uno script che si integri con il framework phpBB. Qualcosa del genere dovrebbe funzionare.

<?php 
define('IN_PHPBB', true); 
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 

// Start session management 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup(); 
?> 

Poi, guarda la funzione $auth->login() (un esempio di utilizzo è nella funzione login_box() in /includes/functions.php). Un esempio semplicistico ancora incompleta è:

$result = $auth->login($username, $password); // There are more params but they're optional 

if ($result['status'] == LOGIN_SUCCESS) 
{ 
    // Logged in 
} 
else 
{ 
    // Something went wrong 
} 
-1

Nello script PHP che sta strisciando attraverso HTML sarà necessario:

  • dati POST come se fosse la compilazione del modulo
  • Prendi la risposta dal server; probabilmente estrarre i cookie della sessione
  • Invia quei biscotti per le richieste successive

Potreste essere interessati a utilizzare qualche biblioteca già esistente per facilitare questo.
Per esempio, si può dare un'occhiata a Zend_Http_Client (see also; la parte che riguarda Sending Multiple Requests With the Same Client probabilmente vi interesserà ;-))


Si potrebbe anche voler dare un'occhiata ad alcuni altri domande/risposte, come:

+0

Non sei proprio sicuro di come questo ha a che fare con phpBB? – nickb

+0

La domanda era: "Come accedere a livello di programmazione nel forum phpBB?". Questa è una buona risposta generale che lo spiega. – budwiser

+0

@budwiser - La domanda era come accedere a ** phpBB **, non come accedere generalmente a qualsiasi applicazione Web remota.Quindi, non è adatto per phpBB, specialmente quando è disponibile un'API e questa risposta parla della scansione di HTML e dell'autenticazione remota. (La domanda dell'OP indica chiaramente la necessità di una soluzione di autenticazione locale) – nickb

10

In primo luogo è necessario il bootstrap per phpBB:

define('IN_PHPBB', true); 
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './phpBB/'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 

$user->session_begin(); 

Dovrete sostituire la parte ./phpBB/ con il percorso relativo al forum.

di rendere l'utente connesso, quello che dovete fare:

$result = $user->session_create($user_id, $admin, $autologin, $viewonline); 

$admin dovrebbe probabilmente essere false, $autologin e $viewonline dipendono da ciò che si desidera.

NOTA: Calling session_create sarà impostare il cookie di sessione per l'utente, in modo da assicurarsi di chiamare solo quando la richiesta attuale è in realtà al servizio l'utente.

+0

Questo non risponde alla domanda dell'OP, in quanto la tua soluzione non accetta il nome utente/password dell'utente per collegarsi, ma impone un accesso a una specifica '$ user_id '. – nickb

+8

Abbastanza corretto, sono andato un po 'troppo lontano nei dettagli. Lascerò la mia risposta qui comunque, poiché ci ho messo un po 'di impegno. Potrebbe aiutare qualcuno un giorno. – igorw

+0

Sono d'accordo, è utile se hai già il loro ID. – nickb