Anzeige
Tutorialbeschreibung

Pfade (absolut, aus URL) - Strings, 'replace'

Pfade (absolut, aus URL) - Strings, "replace"

Oft ist es beim Coden nötig den absoluten (Server-)Pfad automatisch + den URL einer Datei - ohne ihn jedesmal händisch eingeben zu müssen - in einer PHP-Datei zu verwenden.


Beim ABSOLUTEN PFAD gibt es grundsätzlich 2 Möglichkeiten:

1. Der Pfad bis inklusive der Hauptdirectory des Webspace, also unter Weglassung der Unterordner! Das wird oft deshalb benötogt, weil z.B.: eine Applikation vom user in ein Unterverzeichnis gelegt werden wird, bei dem der user selbst den Namen festlegen will und ihn dementsprechend auch verändern will.
Der Code, diesen Pfad zu ermitteln ist einfach:
Der Einfachheit halber machen wir ihn mit einem echo:
<?php echo $_SERVER["DOCUMENT_ROOT"];?>
Egal also wo dieser Code liegt, er zeigt immer den absoluten Serverpfad mit dem Namen der Maildirectory des Accounts > wesentlich
ohne slash am Ende.
... also z.B.: /home/www/webxyz/html <- Die Maindirectory dieses Servers ist also 'html'.
Der Code nicht als echo, sondern als im script zu verwendende Variable, ist denkbar einfach: z.B.:
<?php $abs= $_SERVER["DOCUMENT_ROOT"];?> ... klarerweise brauche ich das echo auch nur als Variable ausgeben und erhalte den absoluten Pfad: z.B hier.: <?php echo $abs;?>

Wenn der user nun ein Unterverzeichnis mit 'Phantasienamen' anlegt ist es notwendig, den string dorthin richtig zu schreiben, um keinen parse-error zu bekommen: Dabei ist wichtig abstrakt unbedingt zu beachten, dass VARIABLE NIE in ANFÜHRUNGSZEICHEN gehören, auch wenn es zufällig mal klappt, also:
FALSCH: <?php $var='Welt';
echo 'Hallo $var';?>
RICHTIG: <?php $var='Welt'; echo 'Hallo '.$var;?>
Genauso gehen wir nun beim absoluten Pfad mit Subdirectory vor (Achtung! vor dem Ordnernamen slash nicht vergessen, wir haben oben gesagt, dass DOCUMENT_ROOT ohne 'Endslash' den Pfad ausgibt):
<?php echo $_SERVER["DOCUMENT_ROOT"].'/ordnername_userphantasiename';?>

2. Der Pfad bis inklusive der Directory (Ordner) des Webspace, wo die Abfragefile drinnen liegt:
Ogft weiss man den Namen des Subordners genau, weil er z.B.: Teil des Programms ist (bei einem Pic-Uploader der Ordnername, wo die Bilder hineingeladen werden sollen, nennen wir den Subordner 'images'). Oben haben wir gesehen, dass man das so schreiben könnte und es würde klappen:
<?php echo $_SERVER["DOCUMENT_ROOT"].'/images';?>... aber Performance ist das Um und Auf bei einem Programm in PHP, also sucht man immer den kürzesten Code, um dem Server Rechenarbeit zu ersparen und damit das Programm 'schneller' zu machen (Faustregel: Je kürzer das Code-Snippet, desto bessere Performance).

... um also den Ordner (die Ordnerreihe) von der Maindirectory aus gleich mit der Maindirectory mitauszugeben gibt es eine 'Kurzform' in PHP:
sie lautet:
<?php echo dirname(__FILE__);?>

==========================
URL
mit PHP auslesen:

Genau genommen gibt es auch hier 2 Möglichkeiten:
1. Auslesen mit dem Dateinamen, wo der Url ausgelesen wird - ein relativ einfacher Code:

<?php echo $_SERVER["SERVER_NAME"].$_SERVER['PHP_SELF'];?> //string mit 2 Variablen

2. Auslesen ohne den Dateinamen, wo der Url ausgelesen wird (in unserem Fall heisst der Filename 'root.php', den wir beseitigen wollen)

<? $url1='http://'.$_SERVER["SERVER_NAME"].$_SERVER['PHP_SELF'];
$string = $url1;
echo ereg_replace("/root.php", "", $string);?>
Grundsätzlich ist das derselbe Code wie oben zu Punkt 1, aber wir beseitigen jetzt den Filenamen mit der Funktion ereg_replace() und geben erst dieses Funktionsergebnis als echo aus, aber zu dieser Funktion an anderer Stelle. Vorerst bietet das PHP-Handbuch http://at.php.net/manual/de/function.ereg-replace.php genügend weiterführende Infos.


Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Alternative Portrait
-versteckt-(Autor hat Seite verlassen)
  • 28.05.2007 - 19:28

Nunja. Wie gesagt ziemlich unübersichtlich geschrieben, aber trotzdem gut erklärt wenn man sich an den Stil gewöhnt hat. So bekommst du auch von mir drei Sterne.

Portrait von Hagbard666
  • 30.05.2006 - 06:10

Finde es für Anfänger ein wenig zu unübersichtlich geschrieben. Gebe dir im Allgemeinen 3 Stars.

Peter

x
×
×