Applicazione che utilizza i dati di sessione di PhpBB: impossibile utilizzare il codice funzione

StackOverflow https://stackoverflow.com/questions/274496

  •  07-07-2019
  •  | 
  •  

Domanda

Prima ho creato app Web che utilizzano sessioni phpBB e dati utente. La mossa comune è usare un codice come questo:

define('IN_PHPBB', true);
//replace $phpbb_root_path with path to your forum
$phpbb_root_path = '../forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

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

Tuttavia, includendo common.php , porto con sé un sacco di altri metodi che si imbattono in altri metodi che ho installato.

Nel mio esempio, sto eseguendo l'applicazione usando CodeIgniter, che ha già un "reindirizzamento" metodo. Questa domanda dovrebbe applicarsi a chiunque abbia metodi predefiniti che possono essere eseguiti con i metodi phpBB.

Fondamentalmente, tutto quello che devo fare è:

  1. Assicurati che l'utente abbia effettuato l'accesso $ user- > data [nome utente] == anonimo
  2. Utilizza i dati da "$ user- > data" come ID utente, nome schermo, ecc.

Potrei prendere l'array $ user- > data e in qualche modo salvarlo nella mia sessione? Qualcuno ha qualche idea su questo? Grazie in anticipo!

È stato utile?

Soluzione

Hai riscontrato il motivo principale per cui odio il frame funziona. Non si sa mai cosa viene incluso. Soprattutto quando il codice non è orientato agli oggetti. (molto meglio se la tua funzione appartiene agli oggetti, piuttosto che fluttuare liberamente in uno spazio globale.)

Supponendo che il tuo codice abbia già un gestore di sessione definito, non c'è nulla che ti impedisca di usare i normali comandi di sessione.

ad esempio: $ _SESSION ['user_data_array'] = $ user- > data;

poi in seguito usando i dati della sessione

$ data = $ _SESSION ['user_data_array'];

Quando viene scritto un gestore di sessione, sostituisce il gestore di sessione corrente. (Suppongo che sia stato fatto in modo che la sessione sia archiviata nel database, piuttosto che sul server.)

Se non è stato sostituito, è comunque possibile utilizzare PHP come gestore di sessioni predefinito. Tenere sempre presente che i dettagli della sessione vengono salvati in una cartella sul server web corrente. Pertanto, se l'applicazione viene eseguita su più server, i dati della sessione non saranno disponibili se l'utente viene servito da un server diverso in una visita successiva. (da qui la necessità di scrivere gestori di sessione per preservare i dati di sessione tra più server.)

Altri suggerimenti

phpBB ha modificato l'algoritmo per la convalida della password memorizzata nel database dalla versione 2.xa 3.0. (Prima era solo una funzione MD5.) Ma se riesci a trovare il loro URL semi-SDK (non ce l'hanno a portata di mano) ci sono post lì su come utilizzare la verifica dell'utente a un livello di astrazione più elevato di quello che descrivi .

Questo è un caso in cui, se hai intenzione di toccare la loro risorsa, devi farlo a modo loro (che in questo caso è più esplicito di prima.)

Sono d'accordo che sia una decisione rischiosa in entrambi i casi; soprattutto perché phpBB non ha un record particolarmente ammirevole per la qualità del design.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top