2009-10-02 11 views
8

Auf Java-Seite haben wir einen Servlet-Filter, der die Authentifizierung behandelt. Wir müssen nicht alle anderen Servlets oder JSPs ändern, um der Seite eine Authentifizierung hinzuzufügen, es sei denn, die Seite benötigt angepassten Inhalt.Was ist PHP-Equivalent von Java-Servlet-Filter?

Wie können wir dasselbe auf PHP erreichen? Wir verwenden keine Frameworks für PHP.

Antwort

10

Es gibt keine direkt äquivalent. Am besten ist es, wenn Sie oben eine gemeinsame Datei einfügen und diese Logik je nach Bedarf oben ausführen. Also:

require 'common.php'; 

mit:

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

Wenn Sie etwas am Ende zu tun haben Sie ein paar Optionen:

  1. Verwenden Sie einen Ausgabepuffer-Handler mit ob_start(); oder
  2. Registrieren Sie einen Herunterfahren-Rückruf mit register_shutdown_function().

So:

ob_start('my_callback'); 

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

oder

register_shutdown_function(my_callback); 

function my_callback() { 
    // do something 
} 
1

Wenn ich Ihre Frage richtig verstehe.Dies kann auf Architektur variieren .. zum Beispiel .. Erstellen Sie eine Include-Datei, die überprüft, ob der Benutzer über die Sitzung authentifiziert wird, wenn nicht an eine Anmeldeseite senden. Ich denke, jede Seite mit mehr als 2 Skripten würde eine Art Include-Datei verwenden und Sie können diesen Code in diese Datei einfügen. Sie können sogar ein Array haben, das die Namen der Seiten enthält, die eine gültige Benutzersitzung haben müssen und die mit der Anfrage-URI übereinstimmen. Es gibt mehrere Möglichkeiten, darüber zu gehen. Sie müssen nur diejenige auswählen, die am besten zu Ihnen passt.