Dereferrer
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_deverlinke, 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&&word1=Woran liegt das?
Antwort schreiben
Antwort 1 von katy vom 15.01.2021, 11:36 Options
lang=en_GB&word1
ist korrekt, das Semikolon gehört dahin, ansonsten ist der Code nicht valide.
katy
Antwort 2 von Kallos32 vom 15.01.2021, 11:41 Options
Sorry, das war nur ein Teil des ganzen Codes, hier der Ganze.
Richtig:
index.php?lang=en_GB&&word1=www.example.de&&word2=www.example.com
Falsch (so wie mit Dereferrer weitergeleitet wird):
index.php?lang=en_GB&word1=www.example.de&word2=www.example.com
Antwort 3 von Joshuan vom 15.01.2021, 11:42 Options
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.
Antwort 4 von Kallos32 vom 15.01.2021, 12:01 Options
Zitat:
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
Antwort 5 von Kallos32 vom 15.01.2021, 12:02 Options
Möglicherweise könnte ein Hiddenfield helfen? Ich probiers mal...
Antwort 6 von Kallos32 vom 15.01.2021, 12:06 Options
Ne, leider nicht.
Antwort 7 von Joshuan vom 15.01.2021, 12:07 Options
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.
Antwort 8 von Joshuan vom 15.01.2021, 12:08 Options
Was ist denn mit dem ersten Beispiel wo es schon am ersten Kaufmann UND scheitert?
Antwort 9 von katy vom 15.01.2021, 12:25 Options
Zitat:
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
Antwort 10 von Joshuan vom 15.01.2021, 12:31 Options
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. ;-)