was ist PHP_SELF?

Miraculixx

Erfahrenes Mitglied
Ich habe schon unendlich viele Tutorials und Anleitungen durchgelesen, aber nirgends (auch nicht hier im Forum) etwas passendes gefunden. Überall wird zwar beschrieben, wie und wo man PHP_SELF verwenden kann, aber ich weiß noch immer nicht, WAS PHP_SELF ist?
Kann mir das bitte jemand erklären - ich möchte nicht dumm sterben ;)

Ich habe ja irgendwie den Verdacht, dass diese Variable den kompletten Pfad und Namen der aktuellen (also der eigenen) PHP-Datei wiedergibt. Falls das so sein sollte: was hat das für einen Sinn?
 
PHP_SELF ist ein Key der Superglobalen _SERVER. Der Inhalt von _SERVER['PHP_SELF'] ist der absolute Pfad zum Script plus der Dateiname. Wo der Sinn liegt? Naja, z.B. kannst du so das Ziel für ein Formular etc. schön dynamisch festlegen:
Code:
<form action="<?php print($_SERVER['PHP_SELF']); ?>" method="post">
 
Also wenn meine Seite zum Beispiel auf C:\Web\mypage\index.php liegt, dann steht genau das in dieser PHP_SELF-Variable, habe ich das richtig verstanden?
Zum Sinn der Sache: man kann doch auch einfach nur action="index.php" rein schreiben, wo ist da dann der Unterschied?
 
Nein, das ist falsch. Wenn dein Script z.B. ein C:\Programme\Apache\htdocs\test\ liegt, und index.php heisst, enthält PHP_SELF den Pfad relativ zum Server-Root, also /test/index.php. Wenn du das Script jetzt umziehst, auf einen anderen Server, oder einfach nur in einen Unterordner verschiebst, müsstest du in allen Script rumwurschteln. Mit PHP_SELF hat's sich ausgewurschtelt.
 
OK, soweit ist alles klar. Aber wenn ich eine index.php habe, und in der form immer nur auf die index.php verweise, dann ist es doch einfacher, nur index.php rein zu schreiben. Da ist ja dann ein Umzug des Servers/Ändern des Verzeichnisses egal.

Und wenn ich auf andere Dateien verweise, die alle im selben Ordner liegen, dann ist das doch auch egal!? Oder verstehe ich hier etwas falsch?
 
Miraculixx hat gesagt.:
OK, soweit ist alles klar. Aber wenn ich eine index.php habe, und in der form immer nur auf die index.php verweise, dann ist es doch einfacher, nur index.php rein zu schreiben. Da ist ja dann ein Umzug des Servers/Ändern des Verzeichnisses egal.

Und wenn ich auf andere Dateien verweise, die alle im selben Ordner liegen, dann ist das doch auch egal!? Oder verstehe ich hier etwas falsch?
Jein, Wenn du im <form>-Tag auf eine andere Datei verweist, hat ja PHP_SELF, also dieselbe aufrufende Datei, da eh nix verloren.

Wenn du bei sich selbstaufrufenden/verweisenden Dateien immer mit _SERVER['PHP_SELF'] arbeitest, kommst du nie in das "Vergnügen" mal alles nachträglich ändern zu müssen.

Ich empfehle bei selbstaufrufenden/verweisenden Datein wärmstens die _SERVER['PHP_SELF']-Variante.
 
Ahja stimmt, das hatte ich verwechselt, mit Aufrufen von anderen Dateien hat es nichts zu tun.

Aber warum man PHP_SELF verwendet verstehe ich trotzdem noch nicht... vlt. bin ich einfach zu blöd dazu :confused:
Wenn ich in meiner seite index.php einfach nur auf index.php verweise, dann wird immer wieder diese Seite aufgerufen. wenn ich PHP_SELF verwende, dann passiert dasselbe.
Aber da ist es doch in beiden Fällen egal, wo diese Seite liegt oder ob ich den Pfad der Seite ändere. Also wo hab ich da den Knoten in meinem Hirn?
 
*Knotenlöse*

Pfad ist nicht egal, denk mal daran, daß das Formular auch included werden kann.
Dateiname, diese Gründe wurden mehrfach benannt.
 
Es gibt an die 10 Gründe, PHP_SELF zu verwenden und nur einen, den fixen Namen reinzuschreiben.
Und selbst da funktioniert PHP_SELF.

Machs doch einfach aus Gruppenzwang :eek:
 
Zurück