2.7k Aufrufe
in Skripte(PHP,ASP,Perl...) von
Hallo,

ich benötige Hilfe bei einem Dereferrer mit PHP. Zwar wird weitergeleitet, jedoch fehlerhaft, so dass nicht die gesamte URL korrekt ist. Also: die URL wird als "urlencode" übergeben und dann per $_GET ausgelesen und dann mit:
$link = $_GET["link"];
header("Location:".urldecode($link)."");
soll weitergeleitet werden.

Jedoch kommt es zu einem Fehler. Zum Beispiel, wenn ich auf die Seite http://www.google.de/search?num=100&hl=de&q=supportnet&btnG=Suche&meta=lr%3Dlang_de
verlinke, werde ich auf http://www.google.de/webhp?num=100 geleitet. Bei anderen Websiten ist mir aufgefallen, dass Variablen nicht korrekt verbunden werden, z.B. lang=en_GB&word1= anstatt von lang=en_GB&amp&word1=

Woran liegt das?

10 Antworten

0 Punkte
von katy Mitglied (787 Punkte)
lang=en_GB&word1

ist korrekt, das Semikolon gehört dahin, ansonsten ist der Code nicht valide.

katy
0 Punkte
von
Sorry, das war nur ein Teil des ganzen Codes, hier der Ganze.

Richtig:
index.php?lang=en_GB&amp&word1=www.example.de&amp&word2=www.example.com


Falsch (so wie mit Dereferrer weitergeleitet wird):
index.php?lang=en_GB&word1=www.example.de&word2=www.example.com
0 Punkte
von joshuan Mitglied (545 Punkte)
Keine Ahnung. Tu doch mal mal urldecode($link) in das HTML Dokument ausgeben und dann schau dir die Ausgabe in der Quelltextanzeige(!) im Browser an. Da müsste man eigentlich sehn was kaputt ist.

PS: hinter den Doppelpunkt von Location muss ein Leerzeichen.
0 Punkte
von
hinter den Doppelpunkt von Location muss ein Leerzeichen.

Nicht zwingend.

Es ist sehr merkwürdig. Wenn ich mir $link per echo ausgeben lasse, zeigt der Browser:
index.php?lang=en_GB&word1=www.example.de&word2=www.example.com


Im Quelltext steht jedoch:
index.php?lang=en_GB&word1=www.example.de&word2=www.example.com
0 Punkte
von
Möglicherweise könnte ein Hiddenfield helfen? Ich probiers mal...
0 Punkte
von
Ne, leider nicht.
0 Punkte
von joshuan Mitglied (545 Punkte)
Es gibt bestimmt schlecht programmierte Clients die das Leerzeichen erwarten. zb viele von meine Skripte. LOL
Vergiss was der Browser anzeigen tut. Der interpretiert HTML. Das ist sein Job. Hat mit deinem Prob nix zum tun.
0 Punkte
von joshuan Mitglied (545 Punkte)
Was ist denn mit dem ersten Beispiel wo es schon am ersten Kaufmann UND scheitert?
0 Punkte
von katy Mitglied (787 Punkte)
Es ist sehr merkwürdig. Wenn ich mir $link per echo ausgeben lasse, zeigt der Browser:
index.php?lang=en_GB&word1=www.example.de&word2=www.example.com

Im Quelltext steht jedoch:
index.php?lang=en_GB&word1=www.example.de&word2=www.example.com
das ist nicht im geringsten merkwürdig, sondern genau so muss der Browser das anzeigen. & ist die Bezeichnung für ein &, das so nicht im HTML-Quelltext allein stehen darf, weil es ein HTML-Sonderzeichen ist. Mit anderen Worten: überall wo der Browser ein & anzeigen soll muss im Quelltext & stehen. PHP-Funktionen wie htmlspecialcharacters machen nichts anderes als HTML-Sonderzeichen so zu maskieren.

katy
0 Punkte
von joshuan Mitglied (545 Punkte)
Was meinst du mit hidden fields? Kenn ich nur im Formular. Forms sind im Body nicht bei den Headers wie Location. Das Lesen vom HTTP Body nach Location Header ist auch nich zwingend. ;-) Natürlich kannst du ohne Location Header eine Form mit autosubmitt machen aber das geht nur mit Javascript.

Aber konzentrier dich mal auf dein Prob. Das muss lösbar sein. Glaub mir. Hör auf zum raten und theoretisieren. Lass dir Werte ausgeben. Programmieren is nich wie Schachspielen wo man beim denken die Figuren nich anfassen darf. ;-)

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...