ppmk22
Goto Top

Includ verzeichnisübergreifend

Hallo Leute

Heute komme ich mal wieder mit einer frage daher, die ich schon ewig vor mir her schiebe.
Da ich das Problem immer so gelöst habe:

<?php

$include_sql = "sql.php";  

if (file_exists($include_sql))
{
    include($include_sql);
} else
{
    $include_sql = "daten/" . $include_sql;  
    if (file_exists($include_sql))
    {
        include($include_sql);
    } else
    {
        $include_sql = "../" . $include_sql;  
        if (file_exists($include_sql))
        {
            include($include_sql);
        }
    }
}
?>
Das muss doch auch einfacher gehen. Oder?

Geht also darum die Datei Verzeichnis übergreifend zu inkludieren.

Gibt das dar eine Musterlösung für?

Habt einen schönen Tag
Liebe Grüße
Petra

Content-ID: 160371

Url: https://administrator.de/contentid/160371

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

dog
dog 08.02.2011 um 17:04:00 Uhr
Goto Top
Ein Beispiel:

function load($file) {
	$paths = array('./','daten/','../');  
	foreach($paths as $dir) {
		$f = $dir.$file;
		if(file_exists($f)) {
			include $f;
			break;
		}
	}
}

Oder

http://de2.php.net/manual/de/ini.core.php#ini.include-path

Natürlich hilt nix gegen saubere Programmierung face-smile
ppmk22
ppmk22 08.02.2011 um 17:19:43 Uhr
Goto Top
Vielen Dank das werde ich mal ausprobieren.

Natürlich hilt nix gegen saubere Programmierung face-smile

Hast Du da auch einen Vorschlag für? Wie würde das aussehen? Wenn ich mich nur in einem Verzeichnis bewegen würde, wird das alles sehr unübersichtlich.
EvilMoe
EvilMoe 08.02.2011 um 17:23:38 Uhr
Goto Top
Woher kommt die Variable $file?
Wenn diese z.B. durch GET übertragen wird lässt sich damit auch viel blödsinn anstellen.
Wenn dort statt sql.php auf einmal steht "./../../anderes_htdocs/sql.php" würde eine andere "sql.php" includet.

Sicherer wäre basename($file).
ppmk22
ppmk22 08.02.2011 um 17:50:28 Uhr
Goto Top
In diesem Fall komm das $file aus der selben Datei und wäre so deklariert $file = "datei.php";
Arano
Arano 08.02.2011 um 18:44:30 Uhr
Goto Top
Hallo

Und was spricht dagegen einfach
$file = 'data/spl.php';
zu deklarieren ?

Bzw. gleich ein include 'data/sql.php'; ?


~Arano
ppmk22
ppmk22 23.02.2011 um 14:23:10 Uhr
Goto Top
Hab es jetzt so gelöst.

$rootPfad =  $_SERVER['DOCUMENT_ROOT'];  
if($_SERVER['HTTP_HOST'] == "localhost")//PRÜFEN OB DIE SEITE LOCAL LÄUFT   
    $rootPfad .= "/localpfad";          //WENN JA WIRD DER PFAD NOCH ETWAS ERGENZT  

$includeSql = $rootPfad . "/daten/sql.php";  

Liebe Grüße
Petra
EvilMoe
EvilMoe 23.02.2011 um 14:26:40 Uhr
Goto Top
Warum hast du die Pfade nicht einfach relativ angegeben?
ppmk22
ppmk22 18.03.2011 um 21:47:42 Uhr
Goto Top
Weiß nicht genau was Du meinst. Kenne mich mit den Fachbegriffen nicht aus. Meinst Du das so?

/ordner/ordner/datei.xyz

Das hatte jedenfalls nicht funktioniert.
Arano
Arano 18.03.2011 um 22:50:18 Uhr
Goto Top
Nabend,

so ist das auch wieder ein absoluter Pfad. (Der "komplette" Pafd, vom Laufwerk ausgehen - eben absolut).
Ohne den Slash "/" am Anfang wäre es ein relativer Pfad gewesen (von der aktuellen "Position" aus).
PHP-Manual - include

Autofahrt von zu Hause zum Ziel, du bist irgendwo dazwischen. (/sys/pafd)
Absolut: Gesamte Strecke vom Haus bis zum Ziel. (/sys/pafd/verz/datei.ext)
Relative: Rest Strecke von da wo du jetzt bist bis zum Ziel. (verz/datei.ext oder ./verz/datei.ext)


Grundwissen face-wink


~Arano