Seite 1 von 2
Weiterleitung mit Header funktioniert nicht
Verfasst: Mo 6. Aug 2007, 09:44
von mister_tt
Hallo zusammen,
Ich arbeite im Moment an einer Webseite und bearbeite ein Formular. Ich habe nun eine Weiterleitung mit folgendem Befehl eingerichtet:
Code: Alles auswählen
header("Location: http://www.tradefairs.co.uk/index-b-51-1266.html/");
Leider funktioniert diese nicht. Man soll weitergeleitet werden, sobald das Formular abgeschickt wurde. Die Abfragen dafuer sollten alle stimmen, daran habe ich nichts geaendert. Vorher wurde das Formular einfach mit einem Text ersetzt, das habe ich jetzt entsprechend auskommentiert.
Habt ihr eine Idee, wo der Fehler liegen koennte?
Vielen Dank im Voraus fuer eure Hilfe,
Simon
Verfasst: Mo 6. Aug 2007, 12:14
von emergence
Verfasst: Mo 6. Aug 2007, 12:33
von mister_tt
Hallo emergence,
Danke fuer deine Antwort. Ich habe das "/" gerade rausgenommen, leider ohne Erfolg. Die Weiterleitung funktioniert trotzdem nicht.
Noch irgendeine Idee?
Gruss und Danke
Simon
Verfasst: Mo 6. Aug 2007, 12:36
von emergence
hmm...
steht was im errorlog.txt ?
nicht schaden kann auch ein
nach der header anweisung...
Verfasst: Mo 6. Aug 2007, 12:43
von mister_tt
Ein
bewirkt nur ein Abschneiden des Layouts. Hatte es schon einmal mit
probiert.
Gute Idee, in der errorlog nachzuschauen

Da steht was, allerdings weiss ich trotzdem nicht, wie ich das aendern kann...
[06-Aug-2007 13:37:54] PHP Warning: Cannot modify header information - headers already sent by (output started at /srv/www/tradefairs.co.uk/contenido/classes/class.template.php:249) in /srv/www/tradefairs.co.uk/live/front_content.php(792) : eval()'d code on line 565
Danke fuer die Hilfe

Verfasst: Mo 6. Aug 2007, 12:58
von emergence
ad fehlermeldung:
->
http://de.php.net/manual/de/function.header.php
ein workaround ist da beschrieben...
...können Sie dieses Problem umgehen, indem Sie Output Buffering benutzen, mit dem Overhead, dass alle Ihre Ausgaben an den Browser gepuffert werden, bis Sie diese senden. Um dies zu tun, verwenden Sie in Ihrem Skript ob_start() und ob_end_flush()...
Verfasst: Mo 6. Aug 2007, 13:28
von mister_tt
Leider komme ich an die entsprechenden Dateien nicht dran. Von daher muss ich es wohl mit einer JavaScript-Weiterleitung realisieren.
Leider zeigt Contenido aber ein rotes Laempchen, wenn ich die normal reinschreibe:
Code: Alles auswählen
<script language ="JavaScript" type="text/javascript">
<!--
window.location.replace('http://www.tradefairs.co.uk/index-b-51-1266.html');
// -->
</script>
Was ist der Fehler?
Verfasst: Mo 6. Aug 2007, 13:51
von emergence
...wenn ich die normal reinschreibe:
wenn es exakt so dort steht, dürfte es keinen fehler geben...
wie genau gibst du den code aus ?
Was ist der Fehler?
schau im errorlog.txt nach...
es sollte da 'ne aussagekräftige fehlermeldung geben...
Verfasst: Mo 6. Aug 2007, 14:11
von mister_tt
Naja, der Code steht in den Modulen und den Java-Script-Code habe ich halt direkt in den PHP-Code eingefuegt, das muesste doch gehen, oder?
Fehlermeldung:
[06-Aug-2007 14:29:10] PHP Parse error: syntax error, unexpected '<' in /srv/www/tradefairs.co.uk/contenido/includes/functions.mod.php(133) : eval()'d code on line 300
Und die selbe Fehlermeldung kommt ein paar mal mit unterschiedlichen Zeichen im Fettgedruckten...
Was soll mir das sagen!?
Danke schonmal...
Verfasst: Mo 6. Aug 2007, 14:36
von emergence
also innerhalb von php code (<?php ... ?>) müsste das so aussehen
Code: Alles auswählen
echo <<<EOL
<script language ="JavaScript" type="text/javascript">
<!--
window.location.replace('http://www.tradefairs.co.uk/index-b-51-1266.html');
//-->
</script>
EOL;
die php syntax ist schon zu berücksichtigen...
Verfasst: Mo 6. Aug 2007, 15:26
von mister_tt
Das heisst ich muss das in ein echo packen? Was soll dieses "EOL"? Wenn ich das so wie du es geschrieben hast einfuege, kommt immer noch rot...
Sorry, aber bin nicht so super fit in PHP...

Verfasst: Mo 6. Aug 2007, 15:46
von kummer
Verfasst: Mo 6. Aug 2007, 15:50
von mister_tt
Danke kummer, das ist schon klar. Da es sich um ein schon vorhandenes Modul handelt, ist das natuerlich auch schon drin. Das Problem ist aber, dass er den Java-Script Code innerhalb des PHP-Dokuments so nicht annimmt (rotes Laempchen).
Verfasst: Mo 6. Aug 2007, 16:00
von kummer
du machst also ein echo. innerhalb des echos musst du ja entweder einfache oder doppelte anführungszeichen setzen. wenn du einfache verwendest, musst du alle einfachen anführungszeichen im javascript-code mit einem backslash (\) escapen. wenn du doppelte anführungszeichen verwendest, musst du die doppelten anführungszeichen mit einem backslash escapen.
Verfasst: Mo 6. Aug 2007, 16:06
von mister_tt
Danke fuer die Antwort, kummer. Dann muesste das Ganze doch so aussehen:
Code: Alles auswählen
echo'
<script language ="JavaScript" type="text/javascript">
<!--
window.location.replace(\http://www.tradefairs.co.uk/index-b-51-1266.html\);
//-->
</script>';
Dann kommt zwar ein gruenes Laempchen, die Weiterleitung funktioniert jedoch immer noch nicht.