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-Key: 160371

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

Printed on: April 20, 2024 at 06:04 o'clock

Member: dog
dog Feb 08, 2011 at 16:04:00 (UTC)
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
Member: ppmk22
ppmk22 Feb 08, 2011 at 16:19:43 (UTC)
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.
Member: EvilMoe
EvilMoe Feb 08, 2011 at 16:23:38 (UTC)
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).
Member: ppmk22
ppmk22 Feb 08, 2011 at 16:50:28 (UTC)
Goto Top
In diesem Fall komm das $file aus der selben Datei und wäre so deklariert $file = "datei.php";
Member: Arano
Arano Feb 08, 2011 at 17:44:30 (UTC)
Goto Top
Hallo

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

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


~Arano
Member: ppmk22
ppmk22 Feb 23, 2011 at 13:23:10 (UTC)
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
Member: EvilMoe
EvilMoe Feb 23, 2011 at 13:26:40 (UTC)
Goto Top
Warum hast du die Pfade nicht einfach relativ angegeben?
Member: ppmk22
ppmk22 Mar 18, 2011 at 20:47:42 (UTC)
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.
Member: Arano
Arano Mar 18, 2011 at 21:50:18 (UTC)
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