PHP schneidet URL ab
Lukas.
- php
Moin,
ich gebe über eine URL einen Parameter an ein Script weiter. Wenn ich hier nun eine URL einsetze, ist alles nach meiner Ankermarke weg.
Es wird also aus localhost/script.php#meine_marke
beim echo $_GET['target']; nur localhost/script.php ausgegeben.
Wie kann ich die komplette URL verarbeiten?
L.
Tach!
Es wird also aus localhost/script.php#meine_marke
beim echo $_GET['target']; nur localhost/script.php ausgegeben.
Wie kann ich die komplette URL verarbeiten?
Nicht mit PHP oder anderer serverseitiger Technik. Der Browser schickt das nicht zum Server, weil das ein Anker ist, den er nur lokal braucht.
dedlfix.
Hello,
ich gebe über eine URL einen Parameter an ein Script weiter. Wenn ich hier nun eine URL einsetze, ist alles nach meiner Ankermarke weg.
Es wird also aus localhost/script.php#meine_marke
beim echo $_GET['target']; nur localhost/script.php ausgegeben.
Wie kann ich die komplette URL verarbeiten?
Die Fragment-Parameter werden nicht mit dem Request mitgesendet, da sie nur auf dem Client relevant sind. Wenn Du möchtest, dass die Information nicht verloren geht (warum auch immer), musst Du den Fragmentbezeichner als Request-Parameter verpacken (?fragment=meine_marke).
Diese Information nützt Dir aber auf dem Server gar nichts.
Liebe Grüße
Tom S.
Die Fragment-Parameter werden nicht mit dem Request mitgesendet, da sie nur auf dem Client relevant sind. Wenn Du möchtest, dass die Information nicht verloren geht (warum auch immer), musst Du den Fragmentbezeichner als Request-Parameter verpacken (?fragment=meine_marke).
Erstmal danke Euch beiden für den Hinweis.
Diese Information nützt Dir aber auf dem Server gar nichts.
Der Server schleift doch die Info nur durch?
Und soll dann den Link darstellen, der, wenn geklcikt, widerum auf dem Client funktioniert…
L.
Tach!
Der Server schleift doch die Info nur durch?
Nein, der Server bekommt sie gar nicht. Der Browser behält die Information zum Fragment für sich und springt dann nur den Anker an, wenn die Seite vom Server angekommen ist.
dedlfix.
Tach!
Der Server schleift doch die Info nur durch?
Nein, der Server bekommt sie gar nicht.
OK. Der Server SOLL sie doch nur durchschleifen.
Der Browser behält die Information zum Fragment für sich und springt dann nur den Anker an, wenn die Seite vom Server angekommen ist.
Ja, genau das ist das Problem. Dann muss ich das so machen, wie TS sagte und bastel mir die URL eben serverseitig zusammen…
L.
Hello,
Ja, genau das ist das Problem. Dann muss ich das so machen, wie TS sagte und bastel mir die URL eben serverseitig zusammen…
Dazu müsstest Du dann aber keine normale Response senden, sondern eine Umleitung auf die neuen Daten. Sonst ändert sich der Fragmentbezeichner am Client nicht.
Liebe Grüße
Tom S.
Hello,
wenn Du in einer Seite mal an die eine Stelle und mal an eine andere Scrollen willst, dann könntest Du z. B. generell einen Anker #go anhängen an deine Links. Und je nachdem, wohin der Browser nach dem Neuladen der Seite scrollen soll, baust Du auf dem Server im Dokument die Marke ein (id=go).
Das mache ich z. B. bei Rechnungsformularen so, wenn einer Position noch Details hinzugefügt werden sollen. Die ID des Datensatzes ist beim Klicken bekannt und wird mit dem GET- oder POST-Request mit übertragen. Das Fragement bleibt erhalten im Client. Und wenn das Dokument dann mit dem neuen Inhalt zurückkommt, steht die Marke (id=go) an der passenden Stelle.
Liebe Grüße
Tom S.
Hello,
wenn Du in einer Seite mal an die eine Stelle und mal an eine andere Scrollen willst, dann könntest Du z. B. generell einen Anker #go anhängen an deine Links. Und je nachdem, wohin der Browser nach dem Neuladen der Seite scrollen soll, baust Du auf dem Server im Dokument die Marke ein (id=go).
Hi Tom,
verstehe nicht ganz, was Du meinst.
Bei meinem Problem geht es darum, dass ich aus einem beliebigen text URLs erkennen und als Link formatieren möchte. Das klappt auch soweit ganz gut, auch inkl. #marke. Nur nützt es nichts, wenn der Server es nicht erhält. Daher untersuche ich dann jetzt den Link, ob er das Zeichen # enthält, dann splitte ich an dieser Stelle, mache daraus einen neuen Parameter, hänge ihn an und bau mir dann auf dem Server daraus wieder eine URL inkl. #marke.
Oder?
L.
Tach!
Oder?
Ohne zu wissen, was du konkret für eine Aufgabenstellung hast, kann ich da keine Bewertung oder Alternativen geben.
Warum brauchst du am Server den Anker, den doch nur der Brower braucht, um ihn anzuspringen? Hast du da noch eine Indirektion über den Server drin statt dem Browser den Link zum Ziel direkt zu geben?
dedlfix.
Hi dedlfix,
eigentlich ist meine Aufgabenstellung:
(ich weiß gar nicht, ob das in html5 zeiten noch nötig ist, aber das war das eigentliche Ziel)
L.
Tach!
eigentlich ist meine Aufgabenstellung:
- Text nach Links durchsuchen
- Link darstellen und an Script weiterleiten, das dem Browser über einen META-Refresh den referrer verschweigt und weiterleitet.
Wenn du eine URL an den Server senden möchtest, und ihn dazu als Parameter an eine anderen URL hängen möchtest, musst du diese Nutzdaten URL-kodieren. Ansonsten interpretiert da der Browser dran herum.
(ich weiß gar nicht, ob das in html5 zeiten noch nötig ist, aber das war das eigentliche Ziel)
Ich wüsste nicht, wozu das jemals nötig gewesen sein soll.
dedlfix.
Hi dedlfix,
Ich wüsste nicht, wozu das jemals nötig gewesen sein soll.
Ist doch egal. Es gibt so so viele unnötige Dinge im Netz, ich hätts einfach gerne so.
L.
Hello,
wir würden Dir ganz bestimmt auch gerne weiterhelfen. Dazu müsstest Du nur eine etwas bessere Beschreibung liefern. Am besten ist immer ein Link auf die betroffene Webseite nebst Server-Scripten hier im Forum.
Ich kann mir momentan nämlich nicht vorstellen,,wie Du das meinst mit "Links aus der Seite holen".
Liebe Grüße
Tom S.
Hi Tom,
ist gar kein Problem!
Ihr habt mir beide bereits sehr gut weiter geholfen.
Mit Euren Beiträgen denke ich es ganz gut hin zu bekommen.
Nochmal vielen Dank, L.
- Link darstellen und an Script weiterleiten, das dem Browser über einen META-Refresh den referrer verschweigt und weiterleitet.
Hi!
Dazu kannst du einfach die Referrer-Policy nutzen. Die Browserunterstützung schaut bis auf den IE recht gut aus.