In zu inkludierender Datei prüfen, welche Datei inkludieren will
Richi
- php
Hi,
kann man in der Datei inkludiere.php abfragen, welche Datei sie inkludieren will?
Gruß, Richi
Hi!
kann man in der Datei inkludiere.php abfragen, welche Datei sie inkludieren will?
Nein, nur welche sie inkludiert hat. debug_backtrace() liefert den Aufruf-Stack, der auch die Inkludierungen enthält.
Lo!
Hi dedlfix!
kann man in der Datei inkludiere.php abfragen, welche Datei sie inkludieren will?
Nein, nur welche sie inkludiert hat. debug_backtrace() liefert den Aufruf-Stack, der auch die Inkludierungen enthält.
Man kann aber schauen, ob eine bestimmte Konstante in der aufrufenden Datei gesetzt wurde und somit überprüfen, ob das Einbinden rechtens ist.
MfG H☼psel
Hi!
kann man in der Datei inkludiere.php abfragen, welche Datei sie inkludieren will?
Nein, nur welche sie inkludiert hat. debug_backtrace() liefert den Aufruf-Stack, der auch die Inkludierungen enthält.
Man kann aber schauen, ob eine bestimmte Konstante in der aufrufenden Datei gesetzt wurde und somit überprüfen, ob das Einbinden rechtens ist.
Bedingt. Wenn man das gesamte Script inklusive dem/den aufrufenden abbrechen will, kann man exit/die() verwenden. Wenn man nur die Inkludierung verhindern will, aber das Script weiterlaufen soll, kann zwar die inkludierte Datei mit return eine weitere Abarbeitung verlassen, aber die darin enthaltenen Funktionen und Klassen haben dann bereits den Weg in den globalen Funktions- und Klassenspeicher gefunden. Denn der Code wird zuerst übersetzt und dann wird er ausgeführt.
Lo!
Hi,
Man kann aber schauen, ob eine bestimmte Konstante in der aufrufenden Datei gesetzt wurde und somit überprüfen, ob das Einbinden rechtens ist.
Bedingt. Wenn man das gesamte Script inklusive dem/den aufrufenden abbrechen will, kann man exit/die() verwenden. Wenn man nur die Inkludierung verhindern will, aber das Script weiterlaufen soll, kann zwar die inkludierte Datei mit return eine weitere Abarbeitung verlassen, aber die darin enthaltenen Funktionen und Klassen haben dann bereits den Weg in den globalen Funktions- und Klassenspeicher gefunden. Denn der Code wird zuerst übersetzt und dann wird er ausgeführt.
eval is your f[r]iend :-)
Ob es überhaupt darum geht - zu prüfen, ob die Einbindung „rechtens“ ist - wissen wir aber noch gar nicht.
Vielleicht will Richi ja auch nur innerhalb seines eigenen Systems auswerten, „von wo“ eine Datei eingebunden wird, um darauf unterschiedlich reagieren zu können. Was genau er erreichen will, möge er uns also bitte erst mal genauer erklären.
MfG ChrisB
Moin!
Schau Dir das Folgende an (starte caller.php) und ziehe Deine Schlüsse:
<?php
$lnbr=" <br />\n";
print "caller.php:$lnbr";
print "__FILE__: " . __FILE__ . $lnbr;
print "$_SERVER['SCRIPT_FILENAME']: ' . $_SERVER['SCRIPT_FILENAME'] . $lnbr;
include 'inc.php';
?>
<?php
$lnbr=" <br />\n";
print "inc.php:$lnbr";
print "__FILE__: " . __FILE__ . $lnbr;
print "$_SERVER['SCRIPT_FILENAME']: ' . $_SERVER['SCRIPT_FILENAME'] . $lnbr;
?>
Du kannst im übrigen nur prüfen, welche Datei includiert _hat_.
Bei tieferen Strukturen (include ruft include) geht das natürlich nicht so einfach. Wende dann den Tipp mit der selbst definierten Konstante (s. Hopsel) oder debug_backtrace (s. Dedlfix) an.
Über "Magische Konstanten": http://php.net/manual/de/language.constants.predefined.php
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Moin!
print "$_SERVER['SCRIPT_FILENAME']: ' . $_SERVER['SCRIPT_FILENAME'] . $lnbr;
... muss natürlich in beiden Versionen
print "$_SERVER['SCRIPT_FILENAME']: " . $_SERVER['SCRIPT_FILENAME'] . $lnbr;
lauten.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix