Weiterleitung mit Sprungmarke und Parametern?
Thomas
- perl
Hallo,
eigentlich scheint es mir recht einfach. Am Ende eines Scripts soll eine Weiterleitung auf ein anderes Script folgen. Diesem werden Parameter übergeben. Bei der Ausgabe soll dann zu einer HMTL-Sprungmarke gewechselt werden. Doch von dem folgenden Weiterleitungsbefehl werden hartnäckig "#t" und was folgen soll "verschluckt".
my $ziel="http://www.[URL]/el/ad/pl/el123.pl?ThemaID=".$F{ThemaID}."#t".$F{ThemaID}."\n\n";
print "Location: ".$ziel;
Wer weiß eine Erklärung bzw. eine Lösung?
Danke im Voraus.
Hallo!
Doch von dem folgenden Weiterleitungsbefehl werden hartnäckig "#t" und was folgen soll "verschluckt".
my $ziel="http://www.[URL]/el/ad/pl/el123.pl?ThemaID=".$F{ThemaID}."#t".$F{ThemaID}."\n\n";
print "Location: ".$ziel;
Maskiere doch "#t" mal mit einem "" also
$ziel="http://www.[URL]/el/ad/pl/el123.pl?ThemaID=".$F{ThemaID}."#t".$F{ThemaID}."\n\n";
print "Location: ".$ziel;
Gruß, Markus
Hallo,
Nicht dass ich mich mit Perl auskennen würde, aber ich glaube nicht, dass Kommentare mitten in einem String beginnen können (um sich dann bis zum Ende der Zeile zu erstrecken).
Gruß
Moin!
Hallo,
Nicht dass ich mich mit Perl auskennen würde, aber ich glaube nicht, dass Kommentare mitten in einem String beginnen können (um sich dann bis zum Ende der Zeile zu erstrecken).
Stimmt! Da war ich wohl etwas voreilig! ;) Sorry!
Gruß
Hallo,
danke für die rege Diskussion. Der entnehme ich jetzt, dass es nicht geht, richtig? Wie josh auch festgestellt hat, wird #... abgeschnitten und eine Sprungsteuerung ist dann nur über javascript möglich. So hatte ich es befürchtet.
Die Maskierung hatte ich auch bereits getestet, bringt nichts.
Danke,
Thomas
Doch von dem folgenden Weiterleitungsbefehl werden hartnäckig "#t" und was folgen soll "verschluckt".
my $ziel="http://www.[URL]/el/ad/pl/el123.pl?ThemaID=".$F{ThemaID}."#t".$F{ThemaID}."\n\n";
print "Location: ".$ziel;
Wer weiß eine Erklärung bzw. eine Lösung?
Im url Schmea leitet # ein Fragment ein, das der Browser nicht sendet, sondern lokal speichert, und auf die Rückgabe anwendet.
Wenn du # verwenden willst musst du es correkt URL encoden
mfg Beat
Hallo,
Wenn du # verwenden willst musst du es correkt URL encoden
Wenn die URL einen Querystring enthält, gehört der Ankerteil mit codiertem # aber zum Querystring. Das ist ja der Sinn der Codierung, weil # eine feste Bedeutung in einer URL besitzt.
Gruß
Hallo,
Sprünge zu Ankern führt der Browser durch. Bei einem Redirect (setzt du überhaupt einen 3xx-Statuscode?) unterschlägt dein Browser einfach den Anker-Teil der URL. Ich weiß jedoch nicht, ob das das gewünschte Verhalten eines Browsers ist oder nicht. Ändern wirst du AFAIK nichts können, außer "unschöne" Sachen wie JavaScript zu benutzen.
Gruß
Hallo,
das Thema hatten wir schonmal und die Antworten sind auch schon da ;-)
Kleine Ergänzung meinerseits:
sub redir{
my $url = shift;
print "Status: 302 Moved\n";
print "location: $url\n\n";
return;
}
Will meinen: Vor der Umleitung den Status ausgeben, ansonsten quittieren das manche Webserver im error_log.
Viele Grüße,
Hotte