Anke: Pfad, Url ermitteln

ich habe in meinem HTML die Link Adresse

<a href="<?php echo $_SERVER["SCRIPT_NAME"]; ?>datei.html">link text</a>

nur würde ich gerne die URL abfragen ohne, den Dateinamen, so das sie funktioniert.

Aber ich finde nichts in der Übersicht

https://www.php.net/manual/de/reserved.variables.server.php

  1. Hallo

    ich habe in meinem HTML die Link Adresse

    <a href="<?php echo $_SERVER["SCRIPT_NAME"]; ?>datei.html">link text</a>

    Dass das nicht funktionieren kann, weil in $_SERVER["SCRIPT_NAME"] auch der Dateiname enthalten ist, ist dir ja offensichtlich aufgegangen.

    nur würde ich gerne die URL abfragen ohne, den Dateinamen, so das sie funktioniert.

    Aber ich finde nichts in der Übersicht

    https://www.php.net/manual/de/reserved.variables.server.php

    Dazu gibt es aber Funktionen, hier konkret path_info. Mit der Funktion kannst du dir den Pfad aus $_SERVER["SCRIPT_NAME"] herausklauben.

    Tschö, Auge

    --
    Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
    Hohle Köpfe von Terry Pratchett
  2. Du hast alles einzeln:

    • HTTPS oder REQUEST_SCHEME
    • HTTP_HOST
    • SERVER_PORT
    • REQUEST_URI
    • QUERY_STRING

    Musst es nur noch zusammenbauen ... das ist aber keine Raketenwissenschaft.

    Allerdings ist noch eine Warnung: Wenn Du das brauchst, um Links zu „bauen“ dann machst Du vermutlich was falsch. Nimm bevorzugt relative Adressen.

    <?php
    
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    
    function getMyURL ( $withParams=true ) {
    	if ( isset( $_SERVER['REQUEST_SCHEME'] ) ) {
    		$sheme=$_SERVER['REQUEST_SCHEME'];
    	} elseif ( isset( $_SERVER['HTTPS'] ) and 'on' == $_SERVER['HTTPS'] ) {
    	   $sheme='https';
    	} else {
    	   $sheme='http';
    	}
    
    	if ( 'http' == $sheme and 80 != $_SERVER['SERVER_PORT'] ) {
    		$port = ':' . $_SERVER['SERVER_PORT'];
    	} else if ( 'https' == $sheme and 443 != $_SERVER['SERVER_PORT'] ) {
    		$port = ':' . $_SERVER['SERVER_PORT'];
    	} else {
    	   $port = '';
    	}
    
    	$ret = $sheme 
    		 . '://' 
    		 . $_SERVER['HTTP_HOST']
    		 . $port;
    
        if ( $withParams ) {
    		$ret .= $_SERVER['REQUEST_URI'];
    	} else {
    		$pos = strpos( $_SERVER['REQUEST_URI'], '?' );
    		if ( $pos ) {
    			$ret .= substr( $_SERVER['REQUEST_URI'], 0, $pos );
    		} else {
    			$ret .= $_SERVER['REQUEST_URI'];
    		}
    	}
    
    	return $ret;
    }
    
    #/* #Tests:
    header( 'Content-type: text/plain; charset=utf-8' );
    print_r( getMyURL( true  ) );
    echo PHP_EOL;
    print_r( getMyURL( false ) );
    # */
    
    
    1. Hallo Jörg,

      Nimm bevorzugt relative Adressen.

      Amen.

      Wo ist eigentlich REQUEST_SCHEME dokumentiert? Auf php.net nicht, aber jemand verwendet es da in einem Beispiel. Mein IIS gehostetes PHP hier zeigt mir diesen Eintrag nicht. Ist das eine Apache-spezifische SERVER-Variable?

      Wenn man die URL zusammenbaut - muss man dann zwingend Schema, Host und Port davor setzen? Wenn http://example.org:4711/foo/bar/test.php die Datei http://example.org:4711/foo/baz/guggi.html referenzieren will, und vorhat, das mit Hilfe von SCRIPT_NAME zu tun, dann würde ich davon ausgehen, dass Schema, Host und Port definitiv gleich sind. Du tust es ja letztlich auch, weil Du die Informationen aus den $_SERVER Variablen ausliest.

      Es gibt einen Anwendungsfall, wo man diese drei Informationen der URL hinzufügen muss, nämlich dann, wenn man jemand anderem diese URL als Link zum Kopieren geben will. Z.B. in einer Mail.

      Das ist aber schon beim Generieren eines <a> Elements nicht mehr nötig. Wenn eine HTML Seite auf http://example.org:4711 einen Link mit href="/foo/baz/guggi.html" enthält, und der User dem Browser sagt: Copy link address, dann macht der Browser automatisch eine absolute URL draus (ok, Chrome tut es).

      Wenn also http://example.org:4711/foo/bar/test.php einen Link auf http://example.org:4711/foo/baz/guggi.html setzen will, dann sollte es eins von diesen beiden sein:

      <a href="../baz/guggi.html">Guckst Du relativ zu mir</a>
      <a href="/foo/baz/guggi.html">Guckst Du absolut auf dem Server</a>
      

      Das hier zu generieren, ist meiner Auffassung nach verschwendete Arbeitszeit:

      <a href="http://example.org:4711/foo/baz/guggi.html">Guckst Du weltweit absolut</a>
      

      Rolf

      --
      sumpsi - posui - obstruxi
      1. Hallo

        Nimm bevorzugt relative Adressen.

        Amen.

        Das macht die OP bereits. Mit $_SERVER['SCRIPT_NAME'] wird aus http://example.org:4711/foo/bar/test.php der Teil /foo/bar/test.php extrahiert. Anke will nun aber /foo/bar/ haben, um an diesen Teil den Dateinamen, im Beispiel des Eröffnungspostings datei.html, hartkodiert anhängen zu können.

        Das ist aber schon beim Generieren eines <a> Elements nicht mehr nötig. Wenn eine HTML Seite auf http://example.org:4711 einen Link mit href="/foo/baz/guggi.html" enthält, und der User dem Browser sagt: Copy link address, dann macht der Browser automatisch eine absolute URL draus (ok, Chrome tut es).

        Der Firefox tut das auch und ich vermute, dass das auch die anderen Browser so machen.

        Das hier zu generieren, ist meiner Auffassung nach verschwendete Arbeitszeit:

        <a href="http://example.org:4711/foo/baz/guggi.html">Guckst Du weltweit absolut</a>
        

        Das ist auch überhaupt nicht Ankes Anliegen.

        Tschö, Auge

        --
        Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
        Hohle Köpfe von Terry Pratchett
        1. Hallo Auge,

          Das ist auch überhaupt nicht Ankes Anliegen.

          Nein, natürlich nicht. Aber das war in Jörgs Vorschlag und ich habe diesen Vorschlag diskutieren wollen.

          Dass sich Ankes Anliegen am besten mit relativen URLs statt einer mühsamen Ermittlung des Scriptpfades lösen lassen sollte, hatten wir ja schon gesagt.

          Ich habe bisher noch keinen Usecase entdeckt, außer der Publikation einer absoluten URL, für den man unbedingt den Pfad zum Script braucht. In einer komplexen Website aus vielen PHP Dateien, die in mehrere Ordner verteilt sind, könnte das was anderes sein. Aber auch da sollte eigentlich gelten, dass eine konkrete Datei genau weiß, wo ihr relativer Platz in der Verzeichnishierarchie des Scripts ist. Wenn man den Dateien diese Information vorenthalten will (um Sourcen leichter umorganisieren zu können), dann sollte man vielleicht über .htaccess eine Umgebungsvariable mit dem Root-Ordner der Site bereitstellen.

          Rolf

          --
          sumpsi - posui - obstruxi
          1. Hello,

            Ich habe bisher noch keinen Usecase entdeckt, außer der Publikation einer absoluten URL, für den man unbedingt den Pfad zum Script braucht.

            Wenn man sich ein CMS baut, benötigt man den kompletten Pfad nach der Domain i.d.R. für den Router.

            Gleichnamige Scripts, bzw. SubDirs könnte es nämlich in mehreren Kontexten (SubDirs) mit unterschiedlichen Defaults bzw. Verhalten geben.

            Glück Auf
            Tom vom Berg

            --
            Es gibt nichts Gutes, außer man tut es!
            Das Leben selbst ist der Sinn.
          2. Hallo

            Dass sich Ankes Anliegen am besten mit relativen URLs statt einer mühsamen Ermittlung des Scriptpfades lösen lassen sollte, hatten wir ja schon gesagt.

            Ich habe bisher noch keinen Usecase entdeckt, außer der Publikation einer absoluten URL, für den man unbedingt den Pfad zum Script braucht.

            Anscheinend will sie Links, die einem festgelegten Schema folgen, automatisch zusammenstöpseln. Und ja, eine Datei „x.html“, die verlässlich im selben Verzeichnis wie das aufgerufene Dokument liegt, referenziere man hartkodiert mit < href="x.html">. Bei komplexeren Logiken kann es aber schon sinnvoll sein, den Pfad zum aktuellen Dokument programmseitig zu kennen, um anhand dessen Entscheidungen für die zu referenzierende URL zu treffen.

            Ob das überhaupt zutrifft und was Anke nun eigentlich zu erreichen sucht, wissen wir allerdings zum jetzigen Zeitpunkt nicht.

            Tschö, Auge

            --
            Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
            Hohle Köpfe von Terry Pratchett
            1. Hallo,

              Ob das überhaupt zutrifft und was Anke nun eigentlich zu erreichen sucht, wissen wir allerdings zum jetzigen Zeitpunkt nicht.

              Hat eigentlich einer von euch mal drüber nachgedacht, Anke direkt danach zu fragen?

              Gruß
              Kalk

              1. Hallo

                Ob das überhaupt zutrifft und was Anke nun eigentlich zu erreichen sucht, wissen wir allerdings zum jetzigen Zeitpunkt nicht.

                Hat eigentlich einer von euch mal drüber nachgedacht, Anke direkt danach zu fragen?

                Nie und nimmer nich!

                Nee, im Ernst, daran habe zumindest ich nicht gedacht. Ich gehe wohl zu sehr davon aus, dass die OP den Thread schon lesen und schon von selbst auf die ihr implizit gestellten Fragen stoßen wird.

                Nun, es sei hiermit nachgeholt.

                Tschö, Auge

                --
                Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
                Hohle Köpfe von Terry Pratchett
      2. Wo ist eigentlich REQUEST_SCHEME dokumentiert? Auf php.net nicht, aber jemand verwendet es da in einem Beispiel. Mein IIS gehostetes PHP hier zeigt mir diesen Eintrag nicht. Ist das eine Apache-spezifische SERVER-Variable?

        Klares „Ja".

        Das schreibt der Apache dem PHP in die „Umgebung“ - und so landet es in $_SERVER. Man kann sich mit SetEnvIf bzw. auch nur SetEnv und/oder mod_rewrite noch mehr eigenes Zeug „bauen“ - wenn man sich das Leben vermeintlich leicht und dann doch gar schwer machen will.😀

  3. Hello,

    ich habe in meinem HTML die Link Adresse

    <a href="<?php echo $_SERVER["SCRIPT_NAME"]; ?>datei.html">link text</a>

    nur würde ich gerne die URL abfragen ohne, den Dateinamen, so das sie funktioniert.

    Aber ich finde nichts in der Übersicht

    https://www.php.net/manual/de/reserved.variables.server.php

    Du könntest es generisch aufbauen, wie schon ansatzweise beschrieben. Du könntest aber auch einfach mit Stringfunktionen alles hinter dem letzten / abschneiden.

    Sicherheit:

    Du solltest aber in beiden Fällen den Kontextwechsel beachten bei der Ausgabe. Sonst baust Du dir eine XSS-Lücke. Nutze also htmlspecialchars(..., ENT_QUOTES).

    Glück Auf
    Tom vom Berg

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.
    1. Du könntest aber auch einfach mit einer Stringfunktion alles hinter dem letzten / abschneiden.

      Ich weiß jetzt nicht so ganz genau, was gesucht wird.

      Aber als Stringfunktion würde ich dirname() vorschlagen:

      entweder mit meinem Skript (dann mit (teil-)kompletter URL)

      dirname( getMyURL( false ) );
      

      oder, ganz „shorty“:

      dirname( $_SERVER['REQUEST_URI'] );
      
      1. Hello,

        Du könntest aber auch einfach mit einer Stringfunktion alles hinter dem letzten / abschneiden.

        Ich weiß jetzt nicht so ganz genau, was gesucht wird.

        Aber als Stringfunktion würde ich dirname() vorschlagen:

        entweder mit meinem Skript (dann mit (teil-)kompletter URL)

        dirname( getMyURL( false ) );
        

        Das würde sich dann aber auf den Verzeichnisbaum im Fileserver und nicht auf die Ressourcenhierarchie des Webservers beziehen?

        Ich glaube, das Zweite war gefragt.

        Glück Auf
        Tom vom Berg

        --
        Es gibt nichts Gutes, außer man tut es!
        Das Leben selbst ist der Sinn.
        1. Hello,

          Du könntest aber auch einfach mit einer Stringfunktion alles hinter dem letzten / abschneiden.

          Ich weiß jetzt nicht so ganz genau, was gesucht wird.

          Aber als Stringfunktion würde ich dirname() vorschlagen:

          entweder mit meinem Skript (dann mit (teil-)kompletter URL)

          dirname( getMyURL( false ) );
          

          Das würde sich dann aber auf den Verzeichnisbaum im Fileserver und nicht auf die Ressourcenhierarchie des Webservers beziehen?

          Ich glaube, das Zweite war gefragt.

          [edit]
          Ok, nehme den Einwand zurück.
          Ist nur eine Stringoperation, die so ziemlich das Gleiche macht, wie die beiden von mir gennanten Stringfunktionen zusammen ...
          anders als realpath().

          Aber die Geschichte mit dem Port bleibt dann auch.
          Also besser mit pathinfo() generisch aufbauen, oder?

          Glück Auf
          Tom vom Berg

          --
          Es gibt nichts Gutes, außer man tut es!
          Das Leben selbst ist der Sinn.
  4. nur würde ich gerne die URL abfragen ohne, den Dateinamen, so das sie funktioniert.

    In SCRIPT_NAME steht der virtuelle Pfad zu derjenigen Webressource unter der die Seite ausgeliefert wurde. Und das ist ein gültiger URL.

    MFG

    1. Hello,

      nur würde ich gerne die URL abfragen ohne, den Dateinamen, so das sie funktioniert.

      In SCRIPT_NAME steht der virtuelle Pfad zu derjenigen Webressource unter der die Seite ausgeliefert wurde. Und das ist ein gültiger URL.

      ... aber ohne Port und ggf. mit XSS-Manipulation.

      Glück Auf
      Tom vom Berg

      --
      Es gibt nichts Gutes, außer man tut es!
      Das Leben selbst ist der Sinn.
      1. Hallo

        In SCRIPT_NAME steht der virtuelle Pfad zu derjenigen Webressource unter der die Seite ausgeliefert wurde. Und das ist ein gültiger URL.

        ... aber ohne Port …

        Warum sollte da ohne Bedarf ein Port angegeben werden? Wenn du für einen Link die URL https://wiki.selfhtml.org/wiki/Startseite angibst, wird auch kein Port angegeben.

        … und ggf. mit XSS-Manipulation.

        Wie soll, wenn du, dich auf der Domain https://wiki.selfhtml.org befindend, die URL mit /wiki/Startseite angibst, da der XSS-Angriff ablaufen? Ich meine, so alltäglich wie das benutzt wird, sollte ein mögliches Angriffszenario dann nicht längst bekannt sein?

        Tschö, Auge

        --
        Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
        Hohle Köpfe von Terry Pratchett
        1. Hello,

          das haben wir (mit Dir zusammen) vor ca. 16 bis 18 Jahren schon einmal diskutiert. Und ich vertrat damals die Ansicht, dass SCRIPT_NAME gegeüber PHP_SELF da sicher sei. Soweit ich mich erinnere, hast Du mich damals eines Besseren belehrt, dass u.U. noch eine Restlücke bleibt. Es ging dabei um JS, Path_Info und die Parameter.

          Es kommt immer auf die Weiterverarbeitung vor der Ausgabe an. Ich finde es jetzt leider nicht im Archiv.

          Das ist eben fast so, wie mit Beton. Es kommt immer darauf an, was man daraus macht ;-)

          Glück Auf
          Tom vom Berg

          --
          Es gibt nichts Gutes, außer man tut es!
          Das Leben selbst ist der Sinn.
          1. Hello,

            das haben wir (mit Dir zusammen) vor ca. 16 bis 18 Jahren schon einmal diskutiert. Und ich vertrat damals die Ansicht, dass SCRIPT_NAME gegeüber PHP_SELF da sicher sei.

            Weder noch. Der Besucher muss diesen Alias gar nicht kennen. Also macht man ihn auch gar nicht erst sichtbar.

            MFG

            1. Hello,

              Hello,

              das haben wir (mit Dir zusammen) vor ca. 16 bis 18 Jahren schon einmal diskutiert. Und ich vertrat damals die Ansicht, dass SCRIPT_NAME gegeüber PHP_SELF da sicher sei.

              Weder noch. Der Besucher muss diesen Alias gar nicht kennen. Also macht man ihn auch gar nicht erst sichtbar.

              Tut mir leid. Ich verstehe Dich jetzt nicht.
              Könntest Du das bitte etwas ausführlicher erläutern?

              Glück Auf
              Tom vom Berg

              --
              Es gibt nichts Gutes, außer man tut es!
              Das Leben selbst ist der Sinn.
              1. Hello,

                das haben wir (mit Dir zusammen) vor ca. 16 bis 18 Jahren schon einmal diskutiert. Und ich vertrat damals die Ansicht, dass SCRIPT_NAME gegeüber PHP_SELF da sicher sei.

                Weder noch. Der Besucher muss diesen Alias gar nicht kennen. Also macht man ihn auch gar nicht erst sichtbar.

                Tut mir leid. Ich verstehe Dich jetzt nicht.
                Könntest Du das bitte etwas ausführlicher erläutern?

                In diesem Alias steckt der Name des Programm's/Script's auf den alles umgeschrieben wird. Was damit ein potentielles Ziel ist. Von daher muss man diesen Namen nicht an die große Glocke hängen und schon gar nicht mit volllständiger lokaler Pfadangabe.

                Von daher sollte ein direkter Aufruf von SCRIPT_NAME zu einem Status 404 führen.

                MFG

                1. Hallo pl,

                  Das setzt ein Design voraus, bei dem URLs Parameter im Pfad darstellen und ein rewrite stattfindet. Bisher hat keiner gesagt, dass Anke sowas überhaupt tut.

                  Aber selbst wenn... wenn es ein Risiko ist, das rewrite Ziel direkt aufzurufen, statt über den Router, ist wohl irgendwo ein Würmchen im Apfel.

                  Und zweitens wollte niemand den Namen der PHP Datei publizieren. Nur den Pfad dahin, den man ohnehin in allen Ressourcen der Site findet.

                  Rolf

                  --
                  sumpsi - posui - obstruxi
                  1. Und zweitens wollte niemand den Namen der PHP Datei publizieren.

                    Doch. Mit SCRIPT_NAME im href will man das. Denn da steht der Name ja drin.

                    Nur den Pfad dahin, den man ohnehin in allen Ressourcen der Site findet.

                    Natürlich. SCRIPT_NAME im href ergibt einen gültigen URL. Und wenn man sehr viele SCRIPT_NAME hat (also kein rewrite) gibt es sehr viele gültige URLs. Da muss man sich schon selber überlegen welchen von denen man in einem href haben will.

                    Ein Link mit href auf sich selbst jedenfalls macht auch nur dann einen Sinn wenn man bestimmte Schlüssel-Parameter (oder keine) damit verbindet.

                    MFG

                    1. Hallo pl,

                      nur würde ich gerne die URL abfragen ohne, den Dateinamen, so das sie funktioniert.

                      Die Kommata muss man etwas umsortieren, aber mir scheint, du hast die Frage von Anke nicht verstanden.

                      Rolf

                      --
                      sumpsi - posui - obstruxi
          2. Hallo TS,

            man kann einschalten, dass ein PHP Script ausgeführt wird auch wenn es irgendwo im Pfad liegt. Das ist für Routen-URLs interessant, die man ohne mod_rewrite verarbeiten will.

            http://example.org/foo/bar/test.php/arg/orc;foo=bar?q=7
            
            SCRIPT_NAME: /foo/bar/test.php
            PHP_SELF   : /foo/bar/test.php/arg/orc;foo=bar
            

            Allerdings verhalten sich hier die Webserver meines Wissens unterschiedlich, zumindest hatte ich da bei meiner lokalen IIS Testinstallation für eine Linux-Webseite Unterschiede zu beachten. Ich kenne sie nur grad nicht mehr 😊

            PHP_SELF enthält demnach Teile, die nicht zur Lokalisierung des Scripts benötigt werden und damit böse sein können. Die sind in SCRIPT_NAME nicht enthalten, d.h. wenn das PHP Script gefunden wird, kann dieser Teil der URL so böse nicht sein.

            Das Semikolon als Path-Parameter ist zwar in der Spec (gewesen), aber zumindest der IIS akzeptiert es nicht. Ob der Apache es tut, kann ich nicht sagen, und weiß daher auch nicht, ob ein solcher Parameter als potenziell Pöser Pupe in SCRIPT_NAME erscheint.

            Rolf

            --
            sumpsi - posui - obstruxi
          3. Hallo

            Hello,

            das haben wir (mit Dir zusammen) vor ca. 16 bis 18 Jahren schon einmal diskutiert. Und ich vertrat damals die Ansicht, dass SCRIPT_NAME gegeüber PHP_SELF da sicher sei. Soweit ich mich erinnere, hast Du mich damals eines Besseren belehrt, dass u.U. noch eine Restlücke bleibt. Es ging dabei um JS, Path_Info und die Parameter.

            Ich bin mir nicht bewusst, irgendwann einmal für PHP_SELF statt SCRIPT_NAME agitiert zu haben. Aber was weiß ich, was ich vor Urzeiten geschrieben habe.

            Mit Sicherheit als solcher hat das ja auch relativ wenig zu tun, eher mit Privacy. Der Aufhängepunkt ist der Inhalt der Variablen, also ihre Mitteilsamkeit in Bezug auf URL-Parameter, die in PHP_SELF drin sind, in SCRIPT_NAME aber nicht. Und da diese Elemente gern direkt für die Ausgabe und eben nicht (nur) für die Datenverarbeitung benutzt werden, wo dann eventuell mehr drin steht, als gut ist …

            Tschö, Auge

            PS, *btw* und off topic: Der Sommer beginnt. In Sankt Peter Ording wird laut einer gerade eben gehörten Radiomeldung gerade damit begonnen, die Strandkörbe dahin zu schaffen, wo sie ihrem Namen nach hingehören.

            --
            Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
            Hohle Köpfe von Terry Pratchett
            1. Hallo,

              PS, *btw* und off topic: Der Sommer beginnt. In Sankt Peter Ording wird laut einer gerade eben gehörten Radiomeldung gerade damit begonnen, die Strandkörbe dahin zu schaffen, wo sie ihrem Namen nach hingehören.

              Hä, seit wann kann man in SPO Skifahren?

              Gruß
              Kalk

              1. Moin,

                PS, *btw* und off topic: Der Sommer beginnt. In Sankt Peter Ording wird laut einer gerade eben gehörten Radiomeldung gerade damit begonnen, die Strandkörbe dahin zu schaffen, wo sie ihrem Namen nach hingehören.

                Hä, seit wann kann man in SPO Skifahren?

                hmm, und die Dünen kommen mir auch unnatürlich hoch vor. :-)

                Ciao,
                 Martin

                --
                Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
            2. Hello,

              das haben wir (mit Dir zusammen) vor ca. 16 bis 18 Jahren schon einmal diskutiert. Und ich vertrat damals die Ansicht, dass SCRIPT_NAME gegeüber PHP_SELF da sicher sei. Soweit ich mich erinnere, hast Du mich damals eines Besseren belehrt, dass u.U. noch eine Restlücke bleibt. Es ging dabei um JS, Path_Info und die Parameter.

              Ich bin mir nicht bewusst, irgendwann einmal für PHP_SELF statt SCRIPT_NAME agitiert zu haben. Aber was weiß ich, was ich vor Urzeiten geschrieben habe.

              Das steht da gar nicht. Du hast nicht richtig gelesen.

              Du hattest gezeigt, dass auch bei Verwendung von SCRIPT_NAME noch eine Lücke bleiben kann, wenn man den Kontextwechsel für die HTML-Ausgabe nicht absichert.

              Glück Auf
              Tom vom Berg

              --
              Es gibt nichts Gutes, außer man tut es!
              Das Leben selbst ist der Sinn.
              1. Hallo

                das haben wir (mit Dir zusammen) vor ca. 16 bis 18 Jahren schon einmal diskutiert. Und ich vertrat damals die Ansicht, dass SCRIPT_NAME gegeüber PHP_SELF da sicher sei. Soweit ich mich erinnere, hast Du mich damals eines Besseren belehrt, dass u.U. noch eine Restlücke bleibt.

                Ich bin mir nicht bewusst, irgendwann einmal für PHP_SELF statt SCRIPT_NAME agitiert zu haben.

                Das steht da gar nicht. Du hast nicht richtig gelesen.

                Du hattest gezeigt, dass auch bei Verwendung von SCRIPT_NAME noch eine Lücke bleiben kann, wenn man den Kontextwechsel für die HTML-Ausgabe nicht absichert.

                Ach so, darauf wolltest du hinaus. Aber das ist doch wohl „ganz normaler“ Kontextwechsel und damit (zumindest für die Wissenden) ein Allgemeinplatz. 😀

                Tschö, Auge

                edit: geplanten Smiley vergessen

                --
                Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
                Hohle Köpfe von Terry Pratchett
          4. Hallo

            das haben wir (mit Dir zusammen) vor ca. 16 bis 18 Jahren schon einmal diskutiert. Und ich vertrat damals die Ansicht, dass SCRIPT_NAME gegeüber PHP_SELF da sicher sei. Soweit ich mich erinnere, hast Du mich damals eines Besseren belehrt, dass u.U. noch eine Restlücke bleibt. Es ging dabei um JS, Path_Info und die Parameter.

            In der ältesten Fundstelle (von vor 12 Jahren) eines Threads (auch) zum Thema PHP_SELF, an dem wir beide direkt miteinander beteiligt waren gibt es diesen Widerspruch nicht. Allerdings schrieb ich dort auch nur von SCRIPT_NAME ist sicherer“, ohne das zu begründen, vermutlich ohne das (damals) wirklich begründen zu können.

            Ein paar der noch älteren Beiträge von mir, die sich auf PHP_SELF beziehen und die ich bei der Recherche gesichtet habe, sind aber aus heutiger Sicht regelrecht gruselig. Man möchte seinem früheren Ich nicht selbst begegnen müssen. 😏

            Tschö, Auge

            --
            Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
            Hohle Köpfe von Terry Pratchett
    2. nur würde ich gerne die URL abfragen ohne, den Dateinamen, so das sie funktioniert.

      In SCRIPT_NAME steht der virtuelle Pfad zu derjenigen Webressource unter der die Seite ausgeliefert wurde. Und das ist ein gültiger URL.

      Dieser URL kann auf die Seite selbst verweisen, muss aber nicht. Die Frage ist, was in href stehen soll.

      MFG

  5. Hallo

    $_SERVER["SCRIPT_NAME"]
    

    nur würde ich gerne die URL abfragen ohne, den Dateinamen, so das sie funktioniert.

    Denkansätze hast du ja schon einige bekommen. Aber die Fragen seien gestattet, was gedenkst du denn zu erreichen? Zu welchem Zweck willst du den Pfad ermitteln?

    Tschö, Auge

    --
    Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
    Hohle Köpfe von Terry Pratchett