Kompletten Dateipfand anzeigen
Andavos
- php
Hallo,
ich wollte mal fragen wie ich das machen, das er mir den ganzen Pfad anzeigt, also ca. so
http://www.meinesite.de/123/index.php
Mit $PHP_SELF bzw. $_SERVER['PHP_SELF']); zeigt er nur 123/index.php an.
Aber wie mache ich, das er mir die URL noch anzeigt?
P.S. Im Archiv hab ich schon gesucht, aber nichts praktisches Gefunden
MFG
Andavos
Moin!
Hallo,
ich wollte mal fragen wie ich das machen, das er mir den ganzen Pfad anzeigt, also ca. so
<?php
phpinfo();
?>
Sollte sehr aufschlußreich sein... Du musst dann nur noch dahinter kommen, wie man die Server oder Umgebungsvariablen u.s.w. benutzt.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo,
hab das so gemacht:
$referer=getenv("HTTP_REFERER");
Sollte eigentlich klappen, oder?
Und ist das von Server zu Server anders?
MFG
Andavos
Moin!
Hallo,
hab das so gemacht:
$referer=getenv("HTTP_REFERER");Sollte eigentlich klappen, oder?
Nein.
Und ist das von Server zu Server anders?
Das ist ein beliebig vom Browser zu sendender Wert, der identisch ist mit der vorhergehenden Seite. Du willst aber die _aktuelle_ Seite wissen.
Also bastel dir eine Angabe zusammen. Komplett wirst du keine Angabe finden.
- Sven Rautenberg
Moin!
$referer=getenv("HTTP_REFERER");
Der Referer steht in $_SERVER['HTTP_REFERER'] und ist _nicht_ die URL des aktuellen Skriptes, sondern (falls überhaupt vorhanden -> Archiv) die Seite, auf der der Link zur aktuellen war.
Was Du ursprünglich gesucht hast steht in:
$_SERVER['REDIRECT_SCRIPT_URI']
Doch Vorsicht! Es ist keine URI, sondern die URL, dass bedeutet, die URI ist um die search (z.B. GET-Werte aus Formularen) und um die location (#Anker) verkürzt.
Welche Daten Du hast hängt vom Server (natürlich...) und von der Art ab, wie PHP ausgeführt wird. Als Modul des Apache "weiss" PHP mehr als wenn es als CGI ausgeführt wird, zum Beispiel unter dem IIS. In dem Fall musst Du wohl auf $_ENV['REDIRECT_SCRIPT_URI'] zurückgreifen.
Aber mit der Hilfe der mächtigen Funktion phpinfo() kannst Du dies ja immer ganz einfach überprüfen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
ich wollte mal fragen wie ich das machen, das er mir den ganzen Pfad anzeigt, also ca. so
http://www.meinesite.de/123/index.php
Mit $PHP_SELF bzw. $_SERVER['PHP_SELF']); zeigt er nur 123/index.php an.
Schau Dir mal die Funktion realpath() an.
Grüße
Tom
Moin!
ich wollte mal fragen wie ich das machen, das er mir den ganzen Pfad anzeigt, also ca. so
http://www.meinesite.de/123/index.php
Mit $PHP_SELF bzw. $_SERVER['PHP_SELF']); zeigt er nur 123/index.php an.
Schau Dir mal die Funktion realpath() an.
string realpath ( string path)
"realpath() expandiert alle symbolischen Links, und beseitigt Verweise zu '/./', '/../' und extra '/' Zeichen im Input path, und gibt den absoluten Pfadnamen kanonisch zurück. Der Pfad im Ergebnis enthält keine Komponenten eines symbolischen Links mehr, wie '/./' or '/../'. "
http://de.php.net/manual/de/function.realpath.php
Ganz nettes und sicher nützliches Teil aber leider nicht das, was er suchte: liefert den vollständigen Pfad zu einer Datei im Dateisystem.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
Ganz nettes und sicher nützliches Teil aber leider nicht das, was er suchte: liefert den vollständigen Pfad zu einer Datei im Dateisystem.
Ja sorry, habe leider etwas schnell auf "Nachricht absenden" gedrückt.
Wenn er den Realpath ermittelt hat muss er davon noch die Document Root abziehen und durch die Domain ersetzen...
Anders wird man es nicht herausbekommen, oder?
Grüße
Tom
Moin!
Wenn er den Realpath ermittelt hat muss er davon noch die Document Root abziehen und durch die Domain ersetzen...
Oh doch. Probiere auch Du mal die Funktion phpinfo().
Das Ergebnis ist wirklich sehr aufschlußreich. Um mit den Ergebnissen zu arbeiten muss man dann nur noch ein '$' vor die '_XYZ["sonstwas"]' setzen. Und natürlich wissen, was mit den Assoziationen (in den eckigen Klammern) gemeint sein könnte.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
Oh doch. Probiere auch Du mal die Funktion phpinfo().
Das Ergebnis ist wirklich sehr aufschlußreich. Um mit den Ergebnissen zu arbeiten muss man dann nur noch ein '$' vor die '_XYZ["sonstwas"]' setzen. Und natürlich wissen, was mit den Assoziationen (in den eckigen Klammern) gemeint sein könnte.
Nun hast Du's mir aber gegeben!
Drum lese, wer sich ewig bildet...
Aber trotz phpinfo() kann ich nicht entdecken, was Du wohl meinen könntst. Wo steht der komplett expandierte URi oder zumindest URL?
Das könnte doch nur in den Environment-Daten sein.
Lass mich bitte nicht dumm sterben. Sooo lange hab ich nicht mehr.
Grüße
Tom
Moin!
Aber trotz phpinfo() kann ich nicht entdecken, was Du wohl meinen könntst. Wo steht der komplett expandierte URi oder zumindest URL?
$_ENV["REDIRECT_SCRIPT_URI"]
$_ENV["SCRIPT_URI"]
$_SERVER["REDIRECT_SCRIPT_URI"]
$_SERVER["SCRIPT_URI"]
(Es ist ein großes 'i' und kein kleines 'L' in 'URI')
... kommen laut meiner PHP-Info in Frage. Wie geschrieben: Dies kann (und wird) sich ändern, wenn PHP als CGI (und nicht als Modul)ausgeführt wird (zum Beispiel unter dem IIS oder gar PWS)
Du wirst verstehen, warum ich keine Adresse zur Verfügung stelle, wo Du das sehen kannst: Die Informationen sind zum Teil sicherheitsrelevant.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
$_ENV["REDIRECT_SCRIPT_URI"]
$_ENV["SCRIPT_URI"]
$_SERVER["REDIRECT_SCRIPT_URI"]
$_SERVER["SCRIPT_URI"]
(Es ist ein großes 'i' und kein kleines 'L' in 'URI')
Die Redirect-Werte stehen aber eher nur zur Verfügung, wenn PHP als CGI betrieben wird. Ich habe gerade mal nachgesehen: Als Modul erzeugt PHP nur SCRIPT_URI.
_Allerdings_ enthält die SCRIUPT_URI den konfigurierten Standard-Host. Wenn mehrere Domains auf einen Webspace zeigen, und diese alle über einen virtuellen Host laufen, bzw. alle über den einzigen normalen Host laufen, dann verrät SCRIPT_URI die Hauptdomain. Das kann nicht unbedingt gewünscht sein.
HTTP_HOST hingegen zeigt die vom Browser angeforderte Domain. Also setzt man diese Angabe zusammen mit SCRIPT_URL und QUERY_STRING, sowie (falls HTTPS auch verwendet werden kann) mit der Existenz der Variablen $_SERVER['HTTPS'] zu einer URI zusammen.
- Sven Rautenberg
Moin!
Komisch... ich habe ganz andere Werte, als Du erwartest.
Vermutlich ist da allerhand konfigurierbar.
$_ENV["REDIRECT_SCRIPT_URI"]
$_ENV["SCRIPT_URI"]
$_SERVER["REDIRECT_SCRIPT_URI"]
$_SERVER["SCRIPT_URI"]
(Es ist ein großes 'i' und kein kleines 'L' in 'URI')Ich sehe gerade:
Server API: CGI
Stimmts also vermutlich: die haben das tatsächlich als CGI und nicht als Modul laufen. Sorry, das habe ich nicht angenommen, weil ich die Skripte weder mit chmod ausführbar machen muss, noch eine Shebang vonnöten ist. Wie machen die das eigentlich?
_Allerdings_ enthält die SCRIUPT_URI den konfigurierten Standard-Host.
Kann ich nicht bestätigen. Ich habe da mehrere Domains. Ein Test mit fastix.org und fastix.de ergab, daß richtig(oder nicht) fastix.org und fastix.de ausgegeben wurden. Mag aber daran liegen, das es als CGI ausgeführt wird.
HTTP_HOST hingegen zeigt die vom Browser angeforderte Domain.
Jepp. Das auch :)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
Vermutlich ist da allerhand konfigurierbar.
$_ENV["REDIRECT_SCRIPT_URI"]
$_ENV["SCRIPT_URI"]
$_SERVER["REDIRECT_SCRIPT_URI"]
$_SERVER["SCRIPT_URI"]
(Es ist ein großes 'i' und kein kleines 'L' in 'URI')
Und ich habe diese Werte überhaupt nicht. Meine PHP-Version ist z.Zt. 4.3.1
Hätte mich auch gewundert, wenn wir da mit drei Leuten immer wieder dran vorbei geguckt hätten. Das gleiche Problem hatten wir auch mal. Da ist dann extra eine recht komplexe Funktion entstanden.
Grüße
Tom
Moin!
Hätte mich auch gewundert, wenn wir da mit drei Leuten immer wieder dran vorbei geguckt hätten. Das gleiche Problem hatten wir auch mal. Da ist dann extra eine recht komplexe Funktion entstanden.
Es sei, wie es sei... mit den Vorgaben aus der Funktion phpinfo() bist Du auf jeden Fall gut bedient.... Ich weiss ja nicht, was die bei Dir ausgibt, aber ich denke, das Gesuchte lässt sich damit so oder so einfach zusammenbasteln.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®