Die Dispatch Methode

Die erste Möglichkeit liegt darin, ein einzelnes PHP Skript zu hinterlegen, das alle weiteren Skripte per include() oder require() einbindet. Üblicherweise wird bei dieser Methode die zu ladende Datei dem Skript per GET mitgeteilt. Dies könnte beispielsweise so aussehen: example.tld/dispatch.php?task=print_form.

Die Datei dispatch.php ist die einzige Datei im Root-Verzeichnis. Dies ermöglicht dem Entwickler zwei Dinge:

  • Wenn an den Anfang der dispatch.php wichtige Sicherheits-Maßnahmen gesetzt werden, können diese nicht umgangen werden
  • Zur Prüfung ob eine Filterung stattfindet kann an einer zentralen Stelle nachgesehen werden

Um dies weiter auszuführen, hier ein Beispiel für eine dispatch.php:

Zitat<?php
/* Global security measures */
switch ($_GET['task'])
{
    case 'print_form':
        include '/inc/presentation/form.inc';
        break;
    case 'process_form':
        $form_valid = false;
        include '/inc/logic/process.inc';
        if ($form_valid)
        {
            include '/inc/presentation/end.inc';
        }
        else
        {
            include '/inc/presentation/form.inc';
        }
        break;
    default:
        include '/inc/presentation/index.inc';
        break;
}
?>

Wenn dies das einzige öffentlich zugängliche Skript ist, kann die am Anfang der Datei getroffene Sicherheitsmaßnahme nicht umgangen werden. Ebenso leicht lässt diese Technik den Programmierer die ablaufende Kontrolle für bestimmte Abfragen erkennen. So erkennt man beispielsweise recht einfach, daß die Datei end.inc nur dann geladen wird, wenn die Variable $form_valid auf TRUE gesetzt wurde – andernfalls wird das Formular erneut angezeigt.


Netzwerke