Griever: Addresszeile via PHP auslesen?

Hi.

Ich habe es etwas eilig und daher frag ich hier ganz kurz nach:

Welche funktion gibt den Inhalt der Adresszeile der aktuellen Seite zurück?

Möchte einem Problem aus dem Weg gehen, bei dem die über die Adresszeile gesendeten Werte nicht anerkannt werden. Dazu müsse ich sie manuell einlesen und in Variablen setzen.

MFG
Griever

  1. Hallo!

    Welche funktion gibt den Inhalt der Adresszeile der aktuellen Seite zurück?

    Keine Funktion. Globale Arrays:

    $_SERVER['PHP_SELF']
    $_SERVER['QUERY_STRING']
    bzw $_GET

    mfg
      frafu

  2. Hallo Griever,

    Ich habe es etwas eilig und daher frag ich hier ganz kurz nach:

    macht nichts, ich nehme mir etwas Zeit.

    Welche funktion gibt den Inhalt der Adresszeile der aktuellen Seite zurück?

    Keine.

    PHP hat mit der Adresszeile des Browser nichts zu tun, Du weisst in PHP nicht mal, ob der Besucher a) überhaupt eine Adresszeile eingeblendet hat und ob er nicht etwa b) ein Suchmaschinenrobot/Downloadtool/o.ä. ist.

    PHP hat damit nichts zu tun:

    Browser (o.ä.)
      ||
      ||  Lieber www.example.org, Gib mir mal /beispiel
      /
    Webserver, der denkt jetzt eine Weile nach:
    "/beispiel" will der, darf der das? Ja.
    Wo isses denn? *such* gefunden.
    hm, "beispiel" ist aber ein Verzeichnis. Was willer damit?
    Ah, vielleicht den Inhalt? Nö, den kriegt er nicht, meiner, meeeeeiner!
    Aber Moment, da gibbet doch ne Konfiguration, oder? *such*
    Ha! Wenn er ein Verzeichnis will, soll ich ihm eine index-Datei geben.
    Index-Datei? Hallo?! Bin ich eine Kristallkugel? Welche?!
    Ah, da ist eine Liste: index.php, index.html, index
    Eine index.php hab ich. Die kann er kriegen.
    Stopp, ".php", da war doch was.
    Achso ja, da will noch wer wichtig sein.
      ||
      ++===> Liebes PHP, der da (Besucher-IP) will "/beispiel", deswegen musst Du "/beispiel/index.php" in der Document-Root abarbeiten. Ich geb Dir mal mit, was mir der Browser so geschickt hat. Mach was draus.

    PHP arbeitet jetzt. Oder tut zumindest so.

    ++<== Wenn PHP fertig ist, sagt PHP zum Webserver: da hassu! Fertich.
      ||
      /

    Und jetzt antwortet der Webserver dem Browser mit dem Zeug, was ihm PHP gegeben hat.

    Wie soll PHP an der Stelle also wissen, ob und wie der Browser (wenns denn einer ist) eine Adresszeile anzeigt? Und woher weiß PHP, was passiert, NACHDEM PHP dem Webserver alles gegeben hat.

    Du kannst also nur selber PHP die Information mitgeben, ob es da eine Adresszeile gibt. Als Parameter, der wiederrum User-Input ist und dementsprechend unsicher ist.

    Möchte einem Problem aus dem Weg gehen, bei dem die über die Adresszeile gesendeten Werte nicht anerkannt werden. Dazu müsse ich sie manuell einlesen und in Variablen setzen.

    Was meinst Du mit nicht anerkannt? In der Adresszeile übergebene Parameter finden sich in PHP typischerweise in $_GET und $_REQUEST

    Gruß, Thoralf

    --
    Sic Luceat Lux!
    1. echo $begrüßung;

      Welche funktion gibt den Inhalt der Adresszeile der aktuellen Seite zurück?
      Keine.

      Hübsch erzählt, prinzipiell in Ordnung, und doch gestatte ich mir einen kleinen Einwurf.
      Wenn man den Apachen als Webserver hat, liefert dieser unter anderem auch REQUEST_URI. Das ist das, was der Client anfordert. Auch wenn der Apache mit mod_rewrite oder anders Umschreibungen vornimmt und dem PHP-Script erzählt, es wäre anders aufgerufen worden, kann man darin immer noch den Original-Wunsch des Client ablesen.

      Das mit der Adresszeile war vielleicht auch nur so dahergesagt, weil es das offensichtlichste war, und der besser beschreibende Begriff "angeforderte URL" grad nicht bekannt war.

      echo "$verabschiedung $name";

      1. Hallo,

        Hübsch erzählt, prinzipiell in Ordnung, und doch gestatte ich mir einen kleinen Einwurf.
        Wenn man den Apachen als Webserver hat, liefert dieser unter anderem auch REQUEST_URI. Das ist das, was der Client anfordert. Auch wenn der Apache mit mod_rewrite oder anders Umschreibungen vornimmt und dem PHP-Script erzählt, es wäre anders aufgerufen worden, kann man darin immer noch den Original-Wunsch des Client ablesen.

        Was machst Du, wenn in der Adresszeile javascript:self.location='http://www.example.org/?abc#def' steht? Von dem JS-Gesumse kriegt der Server und auch PHP nix mit. Genausowenig vom Anker. Er kriegt auch als Request_URI nur den Uniform Resource Identifier der konkreten Request mit. Und von dem (ohne das beim OP offenbar noch fehlende Hintergrundwissen) auf die Adressleiste zu schließen, halte ich für gefährlich und falsch.

        Das mit der Adresszeile war vielleicht auch nur so dahergesagt, weil es das offensichtlichste war, und der besser beschreibende Begriff "angeforderte URL" grad nicht bekannt war.

        Wenn man die Frage so interpretiert, hast Du natürlich recht. Dann sollte aber alles beachtet werden, vom Unterschied zwischen PHP_SELF und SCRIPT_NAME über die diversen Varianten der REQUEST_*, QUERY_STRING, PATH_INFO etc. ;)

        Gruß, Thoralf

        --
        Sic Luceat Lux!