2009-10-02 17 views
8

Po stronie Java mamy filtr serwletów, który obsługuje uwierzytelnianie. Nie musimy zmieniać wszystkich innych serwletów ani stron JSP, aby dodać uwierzytelnianie do strony, chyba że strona wymaga dostosowanej zawartości.Co to jest odpowiednik PHP w Java Servlet Filter?

Jak możemy osiągnąć to samo w PHP? Nie używamy żadnych frameworków w PHP.

Odpowiedz

10

Brak bezpośredniego odpowiednika. Najlepszym rozwiązaniem jest umieszczenie wspólnego pliku na górze i wykonanie takiej logiki w razie potrzeby. Więc:

require 'common.php'; 

z:

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

Jeśli chcesz zrobić coś na końcu masz kilka opcji:

  1. Użyć obsługi bufor wyjściowy z ob_start(); lub
  2. Zarejestruj wywołanie zwrotne wyłączania przy pomocy register_shutdown_function().

Więc:

ob_start('my_callback'); 

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

lub

register_shutdown_function(my_callback); 

function my_callback() { 
    // do something 
} 
1

jeśli dobrze rozumiem twoje pytanie. To może się różnić w architekturze .. na przykład .. utwórz plik włączający, który sprawdza, czy użytkownik jest uwierzytelniony poprzez sesję, jeśli nie zostanie wysłany do strony logowania. Myślę, że każda witryna zawierająca więcej niż 2 skrypty użyje jakiegoś pliku włączającego i możesz umieścić ten kod w tym pliku. możesz nawet mieć tablicę, która zawiera nazwy stron, które muszą mieć prawidłową sesję użytkownika i pasują do tego z prośbą uri .. kilka sposobów na zrobienie tego .. po prostu wybierz ten, który najbardziej Ci odpowiada.

Powiązane problemy