Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge

 
Erweiterte Suche

5476 Beiträge in 1178 Themen- von 498 Mitglieder - Neuestes Mitglied: Rithaquesri

22.05.2012 10:22
ProfiHost - SupportforumTechnikProgrammiersprachenHeader Problem
Seiten: [1]   Nach unten
Drucken
Autor Thema: Header Problem  (Gelesen 2878 mal)
Chrizzz
Newbie
*
Offline Offline

Beiträge: 2


Profil anzeigen
« am: 01.08.2003 10:34 »

Hallo,

ich hoffe hier kann mir irgendjemand helfen Zwinkernd
Um es kurz zu machen, es geht um folgendes:
Code:
$ride = "thread.php?threadid=$post[threadparentid]&boardid=$post[boardparentid]&styleid=$styleid$session&page=$pages"."#".$i;
header("Location: $ride");

Das Problem ist hier, dass ab der Raute (#) die Variable $ride "beschnitten" wird...
Die Weiterleitung funktioniert also nicht zu 100%...
ein "\#" hat mich auch nicht weitergebracht...

Ich hoffe, dass hier jemand eine rettende Idee für mich hat Lächelnd
Gespeichert
yggdrasil
Full Member
***
Offline Offline

Beiträge: 100


Profil anzeigen WWW
« Antworten #1 am: 01.08.2003 12:01 »

Code:

<?php
$string
="&#123;$_SERVER['PHP_SELF'&#93;&#125;?weiterleitung#1"
if&
#40;isset&#40;$_GET['weiterleitung'&#93;&#41;&#41; echo $string;                                       
else header&#40;"Location&#58; $string"&#41;;
?>


geht doch wunderbar: http://schukraft.org/test/

btw: $post[test] ist falsch und wird nur korrekt interpretiert, weil der Parser nett ist Zwinkernd

$ride=$thread.php?threadid={$post['threadparentid']}...";
dann gibts auch keine Probleme mit Variablen Zwinkernd
Gespeichert
Chrizzz
Newbie
*
Offline Offline

Beiträge: 2


Profil anzeigen
« Antworten #2 am: 01.08.2003 13:00 »

Hi,

danke für deine Antwort.
Ich hab das Problem nun durch eine "doppelte Weiterleitung" gelöst, in der ich die Variablen leicht verändert an eine externe Datei weiterleite und von dort die eigentliche Weiterleitung vornehme...

Komischerweise funktioniert dort die EXAKT gleiche Syntax ohne Probleme....
Gespeichert
Netizen
Newbie
*
Offline Offline

Beiträge: 37


Profil anzeigen WWW
« Antworten #3 am: 04.08.2003 03:17 »

Zitat von: "Chrizzz"

Um es kurz zu machen, es geht um folgendes:
Code:
$ride = "thread.php?threadid=$post[threadparentid] ... &page=$pages"."#".$i;
header("Location: $ride");

Das Problem ist hier, dass ab der Raute (#) die Variable $ride "beschnitten" wird...
Die Weiterleitung funktioniert also nicht zu 100%...

Inwiefern beschnitten? Was gibt ein print $ride; aus?

Ein paar Anmerkungen zu dem Code:
[list=1]
  • Beim Zugriff auf die einzelnen Elemente eines assoziativen Arrays muß der Index grundsätzlich in Hochkommata eingeschlossen werden, wenn es sich um einen String handelt. Schreibe also z.B. $post['threadparentid'].

Siehe dazu auch

Arrays // Why is $foo[bar] wrong?
http://www.php.net/manual/en/language.types.array.php#language.types.array.foo-bar

  • Ein & in einer URL sollte immer als Entity & geschrieben werden.
  • header("Location: ...") erwartet eine vollständige Adresse inklusive Protokoll und Domain, eine Weiterleitung nur mit Dateiname ist ungültig.
  • Warum ist die Raute # eigentlich als extra String gekennzeichnet?
Das läßt sich doch zusammenfassen: "...&page=$pages#$i";[/list:o]
Zitat von: "Chrizzz"

ein "\#" hat mich auch nicht weitergebracht...

Kann ja auch nicht. Die Raute ist kein Zeichen, das in einem String escaped werden muß (in einer RegEx vielleicht), somit ist der Backslash überflüssig.

HTH
n.
Gespeichert
ProfiHost - Technik
Administrator
Hero Member
*****
Offline Offline

Beiträge: 1703


Profil anzeigen
« Antworten #4 am: 04.08.2003 08:46 »

Punkt 3 ist leider nicht richtig. Location kann auch nur Dateinamen enthalten.

Zumindest stört dies weder IE >= 4.0 (mit 3.x konnte ich nicht testen) und auch nicht Netscape >= 4.x
Gespeichert

Mit freundlichen Grüßen
Ihr ProfiHost Team
Netizen
Newbie
*
Offline Offline

Beiträge: 37


Profil anzeigen WWW
« Antworten #5 am: 04.08.2003 21:25 »

Zitat von: "ProfiHost - Technik"
Punkt 3 ist leider nicht richtig. Location kann auch nur Dateinamen enthalten.

Kann schon, sollte aber nicht, weil es dann nicht der Spezifikation entspricht.

14.30 Location  
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30
Zitat
The Location response-header field is used to redirect the recipient to a location other than the Request-URI [...] The field value consists of a single absolute URI.

Siehe dazu auch

header
http://www.php.net/manual/en/function.header.php
Zitat
Note: HTTP/1.1 requires an absolute URI as argument to Location: including the scheme, hostname and absolute path, but some clients accept relative URIs. You can usually use $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] and dirname() to make an absolute URI from a relative one yourself [...]

Gruß
n.
Gespeichert
ProfiHost - Technik
Administrator
Hero Member
*****
Offline Offline

Beiträge: 1703


Profil anzeigen
« Antworten #6 am: 05.08.2003 08:40 »

OK :-) Deswegen der zweite Satz - zumindest stört dies weder... usw.

Wieder etwas dazu gelernt.
Gespeichert

Mit freundlichen Grüßen
Ihr ProfiHost Team
Seiten: [1]   Nach oben
Drucken
Gehe zu: