Gerrit: Anker bzw. Fragment fehlt in URI

Hallo,

ich hab wirklich lange gesucht, aber nichts gefunden - und dabei scheint das Problem nicht wirklich eins zu sein:

Bei Klick auf einen Link meiner homepage, z.B. test.html#anker, wird die Seite  test.html aufgerufen. Gleich zu Anfang der test.html habe ich notiert:

<?php $adresse = $_SERVER['REQUEST_URI']; ?>
<html>...

Bei Weiterverarbeitung von $adresse fehlt aber der Anker #anker. Ich hab schon alle $_SERVER Indizes durch, aber nirgendwo findet sich der Anker wieder, den ich aber schon gerne hätte.

Dass der Anker irgendwo existiert, sehe ich ja daran, dass nach Aufbau der test.html der Browser tatsächlich auch zum Anker springt.

Könnt Ihr mir bitte noch mal helfen?

Sonnige Pfingstgrüße
Gerrit

  1. hi,

    Bei Weiterverarbeitung von $adresse fehlt aber der Anker #anker. Ich hab schon alle $_SERVER Indizes durch, aber nirgendwo findet sich der Anker wieder, den ich aber schon gerne hätte.

    Ein Anker ist kein Bestandteil von HTTP. Daher ist ein Anker auch nicht in REQUEST_URI zu finden.

    Viele Grüße,
    Horst Haselhuhn

    1. Danke hotti,

      Ein Anker ist kein Bestandteil von HTTP. Daher ist ein Anker auch nicht in REQUEST_URI zu finden.

      Ok, nur zum Verständnis:

      Meine Anfrage läuft komplett über den Server.
      Der sieht und kann nur sehen alles, was vor dem # steht.
      Der Server schickt die angefragte Seite zurück zum Client und hängt offensichtlich den Anker wieder an, denn mein Browser springt ja an die "richtige" Stelle.
      Dann müsste ich eine "Sichtbarkeit" für PHP mit Hilfe von RewriteCond Directive in der .htaccess erreichen können, oder?!

      Gruß
      Gerrit

      1. Hi!

        Meine Anfrage läuft komplett über den Server.

        Nein, ein Client ist auch noch im Spiel, ...

        Der sieht und kann nur sehen alles, was vor dem # steht.

        ... und der behält das Fragment ein.

        Der Server schickt die angefragte Seite zurück zum Client und hängt offensichtlich den Anker wieder an, denn mein Browser springt ja an die "richtige" Stelle.

        Nein, der Client hat die URL zum Beispiel in der Adresszeile, die er zum Zwecke des Requests etwas auseinandernimmt. Die Response rendert er und springt anschließend zum im Fragment genannten Anker.

        Dann müsste ich eine "Sichtbarkeit" für PHP mit Hilfe von RewriteCond Directive in der .htaccess erreichen können, oder?!

        Nein, denn das läuft wieder auf dem Server. Der Server hat keine Chance, das Fragment zu erhalten. Es sei denn, du stellst irgendwelche URL-Tricksereien an, aber dann ist das auch kein Fragment mehr.

        Lo!

        1. Hei, dank Euch allen, ich geh noch mal in mich, denn ich denk wohl wieder zu kompliziert.
          Aber Eure Antworten haben mir sehr geholfen!
          Gruß
          Gerrit

      2. hi,

        Dann müsste ich eine "Sichtbarkeit" für PHP mit Hilfe von RewriteCond Directive in der .htaccess erreichen können, oder?!

        Ne, siehe dedlfix. Aber es gäbe einen Workaround, Du könntest die Links so schreiben, dass der Anker als Parameter enthalten ist

        http://example.com/rabbit.html?anchor=goto

        hättest dann das Ankerzeugs im REQUEST_URI, müsstest dann aber einen Location-Header senden mit Status 30x. Aber ob das so gut ist hinsichtlich Search Engines... wahrscheinlich nicht, denn da wäre jeder Link ne Umleitung.

        Hmm, also ich baue da ja auch gerade was mit Ankers. In meinem Bestellsystem bekommt jeder Artikel einen Anker, wenn ein Artikel zum Warenkorb kommt, wird das alles in die Tabelle geschrieben und der Link "zurück zum Artikel" bekommt auch einen Anker angehängt, #a1, #a2 usw., nur Nummern also. Zum Anspringen gut, aber meine Anker haben auch eine technische Bedeutung, nämlich als Identifier für das Bestellformular unter dem Artikel. Kurzum, ich speichere das Ankerzeugs nicht im Link auf der Seite (der Link ist nur für die Touristen), den Anker, den _ich_ als Identifier brauche, bekommt seinen Speicherort in der MySQL Tabelle.

        Wenn ein Touri aus der Warenkorbtabelle erneut einen Artikel anspringt, wird eine reine HTML Seite requestet und das was ich dann zum Verschönern brauche, z.B. die Anzahl der bestellten Artikel, wird per Ajax nachgeladen, da wird dann auch der Button "In den Warenkorb legen" umbeschriftet auf "Anzahl der bestellten Artikel ändern".

        Nur malso als Gedankengut zum Feiertag,
        Horst Glucke

        1. @@hotti:

          nuqneH

          http://example.com/rabbit.html?anchor=goto

          hättest dann das Ankerzeugs im REQUEST_URI, müsstest dann aber einen Location-Header senden mit Status 30x.

          Warum?

          http://example.com/rabbit.html?anchor=goto#goto

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. hi,

            Warum?

            http://example.com/rabbit.html?anchor=goto#goto

            Im Grunde genommen ist das auch Mist (*). Daten, die eine programmiertechnische Bedeutung haben, über die Darstellungsebene zu ziehen. In meinen Scripts passiert das vorher und der Besucher sieht einen sauberen Link.

            (*) Darüber habe ich nicht nur heute nachgedacht, kannste glauben ;-)

            (naja, ich denke ja nicht ständig)

            Viele Grüße,
            Horst Bitterbier

  2. Moin,

    Bei Klick auf einen Link meiner homepage, z.B. test.html#anker, wird die Seite  test.html aufgerufen. Gleich zu Anfang der test.html habe ich notiert:

    <?php $adresse = $_SERVER['REQUEST_URI']; ?>
    <html>...

    Bei Weiterverarbeitung von $adresse fehlt aber der Anker #anker.

    richtig, der wird ja auch gar nicht an den Server übermittelt.

    Dass der Anker irgendwo existiert, sehe ich ja daran, dass nach Aufbau der test.html der Browser tatsächlich auch zum Anker springt.

    Ja, dein Browser kennt ihn natürlich. Aber er wertet ihn erst aus, wenn er das Dokument vom Server erhalten hat. Dann sucht er den Anker im Dokument und scrollt an die gewünschte Stelle.

    Ciao,
     Martin

    --
    Zwei Freundinnen tratschen: "Du, stell dir vor, die Petra kriegt ein Kind!" - "Ich kann mir schon denken, von wem." - "Dann ruf sie mal schnell an, das würde ihr bestimmt weiterhelfen."