Anker bzw. Fragment fehlt in URI
Gerrit
- php
0 hotti0 Der Martin
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
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
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
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!
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
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
@@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'
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
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