2009-10-02 13 views
8

Sul lato Java, abbiamo un filtro servlet che gestisce l'autenticazione. Non è necessario modificare tutti gli altri servlet o JSP per aggiungere l'autenticazione alla pagina, a meno che la pagina non richieda contenuti personalizzati.Che cos'è il PHP Equivalent of Java Servlet Filter?

Come possiamo ottenere lo stesso su PHP? Non usiamo alcun framework su PHP.

risposta

10

Non c'è un equivalente direttamente. La soluzione migliore è includere un file comune nella parte superiore e fare tale logica all'inizio di quanto richiesto. Quindi:

require 'common.php'; 

con:

if (!isset($_SESSION['userid'])) { 
    // authentication stuff 
} 

Se si vuole fare qualcosa alla fine si ha un paio di opzioni:

  1. Utilizzare un gestore di buffer di uscita con ob_start(); oppure
  2. Registrare una richiamata di arresto con register_shutdown_function().

Quindi:

ob_start('my_callback'); 

function my_callback($str) { 
    // do something 
    return $str; 
} 

o

register_shutdown_function(my_callback); 

function my_callback() { 
    // do something 
} 
1

se capisco correttamente la tua domanda. Questo può variare in architettura .. per esempio .. creare un file include che controlla se l'utente è autenticato tramite la sessione, se non viene inviato a una pagina di accesso. Penso che qualsiasi sito con più di 2 script utilizzi una sorta di file include e tu puoi inserire questo codice in quel file. puoi anche avere una matrice che contiene i nomi delle pagine che devono avere una sessione utente valida e abbinarla alla richiesta uri .. diversi modi per farlo .. devi solo scegliere quello che più ti aggrada.