Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Includ verzeichnisübergreifend

Frage Entwicklung PHP

Mitglied: ppmk22

ppmk22 (Level 1) - Jetzt verbinden

08.02.2011 um 16:32 Uhr, 3183 Aufrufe, 9 Kommentare

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:

01.
<?php 
02.
 
03.
$include_sql = "sql.php"
04.
 
05.
if (file_exists($include_sql)) 
06.
07.
    include($include_sql); 
08.
} else 
09.
10.
    $include_sql = "daten/" . $include_sql
11.
    if (file_exists($include_sql)) 
12.
13.
        include($include_sql); 
14.
    } else 
15.
16.
        $include_sql = "../" . $include_sql
17.
        if (file_exists($include_sql)) 
18.
19.
            include($include_sql); 
20.
21.
22.
23.
?>
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
Mitglied: dog
08.02.2011 um 17:04 Uhr
Ein Beispiel:

01.
function load($file) { 
02.
	$paths = array('./','daten/','../'); 
03.
	foreach($paths as $dir) { 
04.
		$f = $dir.$file
05.
		if(file_exists($f)) { 
06.
			include $f
07.
			break
08.
09.
10.
}
Oder

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

Natürlich hilt nix gegen saubere Programmierung
Bitte warten ..
Mitglied: ppmk22
08.02.2011 um 17:19 Uhr
Vielen Dank das werde ich mal ausprobieren.

Natürlich hilt nix gegen saubere Programmierung

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.
Bitte warten ..
Mitglied: EvilMoe
08.02.2011 um 17:23 Uhr
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).
Bitte warten ..
Mitglied: ppmk22
08.02.2011 um 17:50 Uhr
In diesem Fall komm das $file aus der selben Datei und wäre so deklariert $file = "datei.php";
Bitte warten ..
Mitglied: Arano
08.02.2011 um 18:44 Uhr
Hallo

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

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


~Arano
Bitte warten ..
Mitglied: ppmk22
23.02.2011 um 14:23 Uhr
Hab es jetzt so gelöst.

01.
$rootPfad =  $_SERVER['DOCUMENT_ROOT']; 
02.
if($_SERVER['HTTP_HOST'] == "localhost")//PRÜFEN OB DIE SEITE LOCAL LÄUFT  
03.
    $rootPfad .= "/localpfad";          //WENN JA WIRD DER PFAD NOCH ETWAS ERGENZT 
04.
 
05.
$includeSql = $rootPfad . "/daten/sql.php";
Liebe Grüße
Petra
Bitte warten ..
Mitglied: EvilMoe
23.02.2011 um 14:26 Uhr
Warum hast du die Pfade nicht einfach relativ angegeben?
Bitte warten ..
Mitglied: ppmk22
18.03.2011 um 21:47 Uhr
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.
Bitte warten ..
Mitglied: Arano
18.03.2011 um 22:50 Uhr
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


~Arano
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (10)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...