hugar: path_info von $_SERVER

lese im php.manual soeben...

Contains any client-provided pathname information trailing the actual script filename but preceding the query string, if available. For instance, if the current script was accessed via the URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, then $_SERVER['PATH_INFO'] would contain /some/stuff.

Die Frage: was bewirken urls, wie im Beispiel angegeben?

Url bis zur Datei "path_info.php" ist klar. Auch "?foo=bar" ist mir klar. Aber was bewirken "Ordner" nach Aufruf der Datei und vor den übergebenen Variablen? (hier /some/stuff/). "client provided" klingt ja irgendwie ziemlich komisch, so als wäre das nichts, mit dem man sicher programmieren kann.

Das ist/war mir schon lange ein Rätsel doch jetzt muss es rein {in den Kopf).

Grüße an alle Schlaumeier.

  1. Hi,

    Contains any client-provided pathname information trailing the actual script filename but preceding the query string, if available. For instance, if the current script was accessed via the URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, then $_SERVER['PATH_INFO'] would contain /some/stuff.

    Die Frage: was bewirken urls, wie im Beispiel angegeben?

    Das kommt darauf an, was der Server mit der angefragten Adresse anfängt, wie er sie auswertet.

    Url bis zur Datei "path_info.php" ist klar. Auch "?foo=bar" ist mir klar. Aber was bewirken "Ordner" nach Aufruf der Datei und vor den übergebenen Variablen? (hier /some/stuff/).

    Die „bewirken“ erst mal gar nichts.

    "client provided" klingt ja irgendwie ziemlich komisch,

    Nein, tut es nicht.
    Auch der Rest der Adresse ist ebenso “client provided”.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hallo,

    Url bis zur Datei "path_info.php" ist klar. Auch "?foo=bar" ist mir klar. Aber was bewirken "Ordner" nach Aufruf der Datei und vor den übergebenen Variablen? (hier /some/stuff/).

    Dies wird öfter gemacht (meisst mittels dem Apache-Modul mod_rewrite o.ä.), wenn man irgendwelche Pfadinformation nicht separat als Parameter angeben nöchte (?path=/some/stuff). Die URL wird dadurch "sprechender", in bestimmten Fällen ist sie somit auch suchmaschinen-freundlicher.

    Allerdings werden solchen URLs natürlich nur vom Client benutzt, der Webserver übersetzt die URL dann entsprechend (in etwas wie
    http://www.example.com/php/path_info.php?path=/some/stuff&foo=bar) - deswegen "client-provided".

    Viele Grüße,
    Jörg

    1. Hi!

      Allerdings werden solchen URLs natürlich nur vom Client benutzt, der Webserver übersetzt die URL dann entsprechend (in etwas wie
      http://www.example.com/php/path_info.php?path=/some/stuff&foo=bar) - deswegen "client-provided".

      Das ist zwar die vermutlich am häufigsten anzutreffende/beschriebene Methode, aber dieses Umschreiben ist nicht immer notwendig und möglich. mod_rewrite kann nämlich nur recht starre Regeln umsetzen. Schon wenn man beliebig viele Path-Teile verwenden möchte, scheitert man damit, sie auf einzelne Variablen verteilen zu wollen. Auch eine variablen Anzahl mit festgelegter Obergrenze ist umständlich, weil das je eine RewriteRule pro Parameteranzahl benötigt. Stattdessen kann und muss man $_SERVER['PATH_INFO'] (in manchen Fällen auch $_SERVER['REQUEST_URI']) selbständig auswerten.

      Lo!

    2. Vielen Dank für das Stichwort "mod_rewrite". Das war ein guter Anreiz. Habe gerade mal ein bisschen was dazu gelesen und vieles verstanden, was ich lange nicht wusste.

      Werde mich damit mal demnächst beschäftigen.

      Schönen Abend!