PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Direktaufruf der include Dateien verhindern



auron2008
18.07.2010, 22:10
Huhu,

ich progge gerad meine Addons für meine Seite selber. Dabei habe ich z.b. beim Anteilssystem, das ganze Addon aufgesplittet in Dateien die ich dann in einer mit include verbinden möchte. Das funzt alles prima.
Nun möchte ich allerdings, das man die includierten Dateien nicht selber einzeln aufrufen kann. Dafür benutze ich folgenden code den ich in jede Datei die includiert werden soll :


$url = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if ($url != 'domain.de/index.php?content=/anteile/anteile')
{
echo 'Der Direktaufruf dieser Datei ist nicht gestattet !';
}
else
{.....

Funktioniert im Opera auch wunderbar, nur im FF sagt er mir immer das 'Der Direktaufruf .......' auch wenn ich nur die anteile.php aufrufe wo alles includiert wird.
Hat jemand eine idee für mich ?

Holstenjungs
18.07.2010, 22:53
Ruf einfach ne PHP-Funktion auf die es nicht gibt. Dann wird zwar ne Fehlermeldung ausgegeben, aber mehr passiert auch nicht. Musst ganz am Anfang der Datei sowas eingeben:
<?keinzutritt();?>
Das Script versucht dann die Funktion "keinzutritt()" aufzurifen. Da es die aber nicht gibt wird das Script abgebrochen.

jpwfour
19.07.2010, 00:47
Dabei sollte man erwähnen, dass es diese Funktion dann in der übergeordneten Datei geben sollte, sonst funzt dass ja auch nicht wie erwünscht :biggrin1:

Schöner evtl. sowas wie:


define('INADDONNAME', true);in der Datei, die die Anderen per include einbindet, und in den einzubindenden Dateien:


if(!defined('INADDONNAME')) die('direct access not allowed');

auron2008
19.07.2010, 10:00
^^ Dann bedanke ich mich bei euch beiden. Hab mich nun für die Lösung von jpwfour entschieden, find die schöner und meine zukünftigen User sollen nich so mit fehlermeldungen des scripts konfrontiert werden ^^ :thumb:

Holstenjungs
19.07.2010, 18:00
Dabei sollte man erwähnen, dass es diese Funktion dann in der übergeordneten Datei geben sollte, sonst funzt dass ja auch nicht wie erwünscht :biggrin1:


Warum?
Wenn es diese Funktion gibt, dann wird der Aufruf der Datei nicht abgebrochen durch die entstehende Fehlermeldung.

* EDIT *
Ich nehm alles zurück und behaupte das Gegenteil. Du hast, mal wieder, Recht.

@auron2008: gerne. ich hätte mich auch für die lösung von jpwfour entschieden. ;)

breaker
22.07.2010, 06:25
if (preg_match('#DATEINAME.php#i', $_SERVER['PHP_SELF']))
{
die ('Diese Datei kann nicht direkt aufgerufen werden!');
}