Hallo,
kann man innerhalb eines PHP-Includes feststellen, ob das Include mittels include() oder mittels include_once() vorgenommen wurde?
So, z.B. (funktioniert nur direkt im Script, nicht innerhalb einer Funktion):
$bt = debug_backtrace ();
if (count ($bt)) {
switch ($bt[0]['function']) {
case 'include':
case 'include_once':
case 'require':
case 'require_once':
case 'eval':
// Obiges sollte alles klar sein
break;
case '__lambda_func':
// wurde als Funktionsrumpf in create_function gestopft, z.B. so:
// $foo = create_function ('',
// '?>'.file_get_contents('bt2.php').'<?php ;'
// );
// Und dann als Funktion aufgerufen: $foo ();
break;
default:
// Unbekannter Fall. Eventuell auch wenn irgend ein Optimizer oder
// irgend eine komische Extension einem da reinpfuscht.
break;
}
} else {
// Script direkt aufgerufen
}
Die Frage ist allerdings: Wozu? Ich wüßte nicht, dass das auch nur ansatzweise sinnvoll sein könnte...
Viele Grüße,
Christian