michael: Befehl für das auslesen des Namens der angezeigte Seite

HAllo,

suche nach einem Befehl unter PHP, der mit den aktuellen Seitennamen wiedergibt - also wie die Seite als Dateinamen heißt.

Könnt Ihr mir kurz weiterhelfen ?... weis nicht genau nach was ich suchen soll ... anhaltspunkt?

Gruß
Michael

  1. HAllo,

    suche nach einem Befehl unter PHP, der mit den aktuellen Seitennamen wiedergibt - also wie die Seite als Dateinamen heißt.

    Könnt Ihr mir kurz weiterhelfen ?... weis nicht genau nach was ich suchen soll ... anhaltspunkt?

    http://at.php.net/manual/en/reserved.variables.server.php
    PHP_SELF

    wenn ich dich richtig verstanden habe

    1. Hi,

      PHP_SELF

      Da register_globals hoffentlich auf off steht: $_SERVER['PHP_SELF']

      off:pp

  2. Hello,

    suche nach einem Befehl unter PHP, der mit den aktuellen Seitennamen wiedergibt - also wie die Seite als Dateinamen heißt.

    Dazu müsstest Du Dich entscheiden, ob Du den Ressourcennamen haben willst, also die vollständige URi, oder nur den Namen des Scriptes, das für die erhaltene Response verantwortlich ist.

    Der Name des Scriptes lautet

    $_SERVER['SCRIPT_NAME']

    Der Name des Scriptes inclusive eventuell vorhandener Path-Info lautet

    $_SERVER['PHP_SELF']

    Der Name des Scriptes inclusive eventuell vorhandener Path-Info und URi-Paramter (Request-Parameter) lautet

    $_SERVER["REQUEST_URI"]

    Für eine Selbstreferenz "normaler" Scripte nimm bitte entweder

    <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>  ... >

    oder

    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']; ?>  ... >

    da ein einfaches $_SERVER['PHP_SELF'] eine Gefährdung für sogenanntes Cross Site Scripting enthält.

    Ein harzliches Glückauf

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. hi,

      oder

      <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']; ?>  ... >

      <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>  ... >

      Der Ordnung halber.

      grüße

      1. Hello,

        <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']; ?>  ... >

        <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>  ... >

        Der Ordnung halber.

        Danke, aber _das_ hätte michael doch selber hinbekommen sollen.
        Die kleinen Fehler baue ich doch immer absichtlich ein ;-))

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    2. Hi,

      <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']; ?>  ... >

      oder

      <form action="" ... >

      da dann das Formular auch so auf sich selbst referenziert.

      Gruß, Cybaer

      --
      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
      1. Hello,

        <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']; ?>  ... >

        oder

        <form action="" ... >

        da dann das Formular auch so auf sich selbst referenziert.

        Und die alte URi wiederverwendet, inclusive eventuell vorhandener GET-Parameter und Path-Info.

        Mit "#" würden zumindest die GET-Parameter getilgt werden, ob die Path-Info auch vom Browser gekillt wird, weiß ich nicht.

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    3. Hi,

      Der Name des Scriptes lautet

      $_SERVER['SCRIPT_NAME']

      Ach, und das kommt auf den Server an. Ggf. ist es $_SERVER['SCRIPT_FILENAME']

      Der Name des Scriptes inclusive eventuell vorhandener Path-Info und URi-Paramter (Request-Parameter) lautet

      $_SERVER["REQUEST_URI"]

      Oder auch nicht - weswegen man noch ARGV checken sollte:

      if(!isset($_SERVER['REQUEST_URI']) && isset($_SERVER['argv']) && isset($_SERVER['argv'][0]))   { $_SERVER['REQUEST_URI']=substr($_SERVER['argv'][0],strpos($_SERVER['argv'][0],';')+1); }

      Eventuell gibt es auch $_SERVER["SCRIPT_URL"]

      Gruß, Cybaer

      --
      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
      1. Hello,

        Der Name des Scriptes lautet

        $_SERVER['SCRIPT_NAME']

        Ach, und das kommt auf den Server an. Ggf. ist es $_SERVER['SCRIPT_FILENAME']

        $_SERVER['SCRIPT_FILENAME'] ist üblicherweise der Name der Datei im Dateisystem inclusive qualifiziertem Pfad ohne  Path-Info und ohne Request-Parameter

        Wegen weiterer Abweichungen sollten wir beide uns mal Gedanken machen und das übersichtlich zusammenschreiben :-)

        Allerdings habe ich erst noch das File-Upload-<I> auf dem Tisch und habe auch Susi versprochen, in dieser Angelegenheit tätig zu werden.

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hi,

          Wegen weiterer Abweichungen sollten wir beide uns mal Gedanken machen und das übersichtlich zusammenschreiben :-)

          Ich versuche mom. immer zu Beginn die versch. Server auf eine einheitliche Basis zu bringen, mit der man dann gesichert arbeiten kann.

          Ich guck das nochmal durch (nach Pfingsten - bruzel ;-)), und wenn der Thread noch offen ist, hänge ich's noch hier rein. Ansonsten fange ich einen neuen an, oder wir machen vorher noch einen Erfahrungsaustausch per Mail?! :-)

          Gruß, Cybaer

          --
          Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
          (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
          1. Hello,

            Ich guck das nochmal durch (nach Pfingsten - bruzel ;-)), und wenn der Thread noch offen ist, hänge ich's noch hier rein. Ansonsten fange ich einen neuen an, oder wir machen vorher noch einen Erfahrungsaustausch per Mail?! :-)

            Das fände ich gut, sich da auszutauschen, auch per Mail.
            Welche Implementierungen sollte man denn unterscheiden?

            Zuerst fiele mir da die Unterscheidung

            • Apache
              -- Modulversion
              -- CGI-Version
              -- Fast-CGI-Version

            • IIS
              -- ???

            ein.

            Wenn es um zusätzlich ins Script importierte Server-Umgebungsvariablen geht, muss man vermutlich auch noch die einzelnen Provider mit ihren Eigenheiten unterscheiden.

            Ein harzliches Glückauf

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hi,

              Zuerst fiele mir da die Unterscheidung

              • Apache
                -- Modulversion
                -- CGI-Version
                -- Fast-CGI-Version

              • IIS
                -- ???

              ein.

              Jo. Und noch Kleinkram durch Studium der entsprechenden User-Kommentare im PHP-Manual. :)

              Wenn es um zusätzlich ins Script importierte Server-Umgebungsvariablen geht, muss man vermutlich auch noch die einzelnen Provider mit ihren Eigenheiten unterscheiden.

              Vielleicht verstehe ich das jetzt falsch, aber es "komplett" zu vereinheitlichen ist, denke ich, schlicht unmöglich.

              Ich bin auf versch. Systemen bei versch. Provider zuhause, und bin immer wieder überrascht, wie unterschiedlich konfiguriert doch die Systeme sind.

              Insofern habe ich einen Kern von mir wichtigen Sachen, auf die ich mich verlassen können möchte/muß. Habe ich diesen Kern, so kann ich - zumindest bis zum Auftreten des Gegenteils =;-> - davon ausgehen, daß die Scripte erstmal so wie sie sind überall laufen (was bislang noch geklappt hat).

              Aber ein Beispiel von mehreren: Unser Firmenserver liefert auch ein _SERVER["REQUEST_TIME"] (der Admin meinte offensichtlich, daß das wichtig ist).

              Habe ich noch bei einem anderen Provider, ansonsten nicht - und würde ich auch nie dort abfragen. Stattdessen lege ich den aktuellen Timestamp immer zu Beginn des Scripts in eine Konstante, und greife dann ggf. darauf zu ...

              Gruß, Cybaer

              --
              Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
              (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
              1. Hello,

                Aber ein Beispiel von mehreren: Unser Firmenserver liefert auch ein _SERVER["REQUEST_TIME"] (der Admin meinte offensichtlich, daß das wichtig ist).

                Das wird sonst z.B. abgebildet in $_SERVER['UNIQUE_ID']

                Da hängt noch mehr drin in diesem Wert, aber die Request-Time steckt auch drin, wenn ich mich recht erinnere.

                ICh denke, dass die Gegenüberstellung der Möglichkeiten überhaupt das spannende an der Sache ist, dami t man nachschlagen kann, elchen Wert men ggf. als Ersatz nehmen kann, wenn der andere nicht vorhanden ist.

                Ein harzliches Glückauf

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
                1. Hi,

                  Das wird sonst z.B. abgebildet in $_SERVER['UNIQUE_ID']

                  Ja, falls das Module installiert ist!

                  Da hängt noch mehr drin in diesem Wert, aber die Request-Time steckt auch drin, wenn ich mich recht erinnere.

                  Ja - und die Zeit ist auch das, was mich interessiert. Allerdings weiß ich nicht, wie der Wert kodiert ist, und viel schlimmer: Ich habe auch Server, die spucken weder das eine, noch das andere aus. :-/

                  ICh denke, dass die Gegenüberstellung der Möglichkeiten überhaupt das spannende an der Sache ist, dami t man nachschlagen kann, elchen Wert men ggf. als Ersatz nehmen kann, wenn der andere nicht vorhanden ist.

                  Ja, spannend schon. Aber angesichts der Vielzahl der Konfigurationsmöglichkeiten auch nur annähernd realistisch, eine einigermaßen umfängliche Übersicht zu erstellen? Also die Zeit fehlt mir - deswegen IMHO die Beschränkung aufs Wichtigste.

                  Trotzdem: wer nicht anfängt, wird nie fertig. ;-)

                  Ich schreib dir mal nach Pfingsten ...

                  Gruß, Cybaer

                  --
                  Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
                  (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)
  3. echo $begrüßung;

    suche nach einem Befehl unter PHP, der mit den aktuellen Seitennamen wiedergibt - also wie die Seite als Dateinamen heißt.

    Viel wurde ja schon genannt, unter anderem auch deshalb, weil es eine für alle Lebenslagen gültige Lösung nicht gibt. Es sei denn, du nimmst die magische Konstante __FILE__, die dir den Namen der Datei angibt, in der sie notiert ist. Bei inkludierten Dateien ist das also nicht das Script, das ursprünglich aufgerufen wurde.

    Könnt Ihr mir kurz weiterhelfen ?... weis nicht genau nach was ich suchen soll ... anhaltspunkt?

    Welchen Wert genau du befragen kannst, kannst du in der Ausgabe von phpinfo(INFO_VARIABLES); sehen. Dort interessieren aber nur die Werte in _SERVER. Ruf dabei dein Script auch mal mit anhängendem Querystring und mit weiteren Pfadteilen (/pfad/zum/script.php/path/info) auf. Diese Angaben sind bei einigen Werten ebenfalls mit angehängt, bei anderen nicht. Auch ein mitspielendes mod_rewrite hat Einfluss auf den Inhalt von $_SERVER.

    echo "$verabschiedung $name";