Konny: Alternative zu EXIT

Ich lade per include eine Datei ein.

Am Anfang der Datei überprüfe ich ob die Zugangsberechtigung erlaubt die Datei auszuführen.
Falls das nicht so ist, möchte ich nur diese Datei, die ich per include lade abbrechen.
Wenn ich das mit

EXIT;

mache, bricht aber nicht nur die Datei sondern auch alles andere ab, was danach kommt.
Gibt es eine Alternative zu einem

EXIT;

an dieser Stelle

Konny

  1. Hallo,

    Ich lade per include eine Datei ein.

    Am Anfang der Datei überprüfe ich ob die Zugangsberechtigung erlaubt die Datei auszuführen.
    Falls das nicht so ist, möchte ich nur diese Datei, die ich per include lade abbrechen.

    dann prüfe doch erst die Berechtigung und include nur, wenn die Berechtigung vorliegt.

    Gruß

    Onkel Schnitzel

    1. dann prüfe doch erst die Berechtigung und include nur, wenn die Berechtigung vorliegt.

      An das habe ich auch schon gedacht, aber ich möchte GERNE eine Funktion haben, die ich an den Anfang einer jeder Seite packe, in der Überrpüft wird ob die Berechtigung vorliegt oder nicht.

      1. dann prüfe doch erst die Berechtigung und include nur, wenn die Berechtigung vorliegt.

        An das habe ich auch schon gedacht, aber ich möchte GERNE eine Funktion haben, die ich an den Anfang einer jeder Seite packe, in der Überrpüft wird ob die Berechtigung vorliegt oder nicht.

        Es spricht ja nichts dagegen. Deine Funktion müsste nur eine Rückgabe liefern, deren Wert du prüfst. Diesen Wert könntest du auch am ganz am Anfang in eine SESSION-Variable speichern. Dort hast du den Wert (z.B. die Berechtigung) dann immer zur Verfügung und musst die Funktion nicht auf jeder Seite erneut aufrufen. Es geht bei dir um eine Art Login mit Berechtigung nehme ich einfach mal an.

        Gruß

        Onkel schnitzel

      2. An das habe ich auch schon gedacht, aber ich möchte GERNE eine Funktion haben, die ich an den Anfang einer jeder Seite packe, in der Überrpüft wird ob die Berechtigung vorliegt oder nicht.

        wenn Du das PARTOUT so willst:

        include_me.php:~~~php

        require_once '../includes/berechtigungspruefung.php';
        if (berechtigungspruefung($foo, $bar, $baz)) {
           # ... whatever
        }

        Daran kann sich auch ein else {...} anschließen.  
          
        Doch halt! Das es so einfach ist macht es nicht besser.  
          
        Etwas besser wäre:  
        ## index.php~~~php
          
        require_once '../includes/berechtigungspruefung.php';  
        if (berechtigungspruefung($foo, $bar, $baz)) {  
           include '../includes/include_me.php';  
           include '../includes/include_me_also.php';  
        }
        

        In beiden Fällen sollte die Datei 'berechtigungspruefung.php' die Funktion berechtigungspruefung() bereit stellen. Die gezeigte Methode, in includes Funktionen bzw. Klassen/Objekte bereit zu stellen und diese dann zu benutzen, ist gängiger Stil und wird auch so empfohlen.

        Auf den Ordner ../includes/ und die darin enthaltenen Skripte sollte man von außen nicht direkt zugreifen können. Idealerweise liegt er außerhalb von document_root oder er ist per .htaccess  mit 'deny from all' gesperrt und idealerweise hat nicht jeder Leserechte für die Dateien und nicht jeder das Recht, den Ordner zu betreten.

        Jörg Reinholz

  2. Tach!

    Gibt es eine Alternative zu einem
    EXIT;
    an dieser Stelle

    return kehrt aus einem include zurück wie bei einer Funktion. Vielleicht ist es besser, wenn du Code in Funktionen steckst, die die Ergebnisse ihrer Arbeit über den Rückgabewert vermelden oder zurückgeben. Die Funktionen lagerst du denn in Include-Dateien aus und rufst sie dann da auf, wo du sie brauchst.

    dedlfix.

  3. hi

    Ich lade per include eine Datei ein.

    Am Anfang der Datei überprüfe ich ob die Zugangsberechtigung erlaubt die Datei auszuführen.

    Über das Konzept würde ich mal nachdenken, insbesondere dann, wenn es sich abzeichnet, dass es mehrere 'Dateien' werden könnten, wo Berechtigungen geprüft werden müssen. Dann müsstest Du das nämlich in jeder Datei machen und wenn dann noch mehrere Benutzergruppen hinzukommen, wird das ein schwer überschaubares Chaos.

    Horst