Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach html

Gibt es eine Möglichkeit einer Möglichkeit die Anweisung
header ("Location: http://www.test.de");
zu machen, nachdem schon html ausgegeben wurde. Denn normalerweise ist so
ein Befehl nur am Anfang möglich, ich möchte in aber am Ende der Seite
haben.

Vanesa
Vanesa Schrankman [ So, 13 Januar 2008 14:52 ] [ ID #1906786 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach h

Vanesa Schrankman schrieb:
> Gibt es eine Möglichkeit einer Möglichkeit die Anweisung
> header ("Location: http://www.test.de");
> zu machen, nachdem schon html ausgegeben wurde.

Ja: Output Buffering [1]


> ich möchte in aber am Ende der Seite haben.

Wieso?

Gruß
Carsten

[1] http://de.php.net/manual/en/ref.outcontrol.php
Carsten Wiedmann [ So, 13 Januar 2008 14:55 ] [ ID #1906787 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach h

Vanesa Schrankman schrieb:

> Gibt es eine Möglichkeit einer Möglichkeit die Anweisung
> header ("Location: http://www.test.de");
> zu machen, nachdem schon html ausgegeben wurde.

Nein.

> Denn normalerweise ist so
> ein Befehl nur am Anfang möglich, ich möchte in aber am Ende der Se=
ite
> haben.

Das macht nicht wirklich Sinn. Um dem Nutzer Zeit zu lassen, den Output
auch wahrzunehmen, realisiert man das mit
echo '<a href=3D"http://www.test.de>Stiftung Warentest</a>';

MfG
Niels

--
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Niels Braczek [ So, 13 Januar 2008 15:15 ] [ ID #1906793 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach h

Carsten Wiedmann meinte:
> Vanesa Schrankman schrieb:
>> Gibt es eine Möglichkeit einer Möglichkeit die Anweisung
>> header ("Location: http://www.test.de");
>> zu machen, nachdem schon html ausgegeben wurde.
>
> Ja: Output Buffering [1]

Da wurde das HTML aber noch nicht "sichtbar" ausgegeben.

>> ich möchte in aber am Ende der Seite haben.
>
> Wieso?

ACK.

Gregor


--
http://photo.gregorkofler.at ::: Landschafts- und Reisefotografie
http://web.gregorkofler.com ::: meine JS-Spielwiese
http://www.image2d.com ::: Bildagentur für den alpinen Raum
Gregor Kofler [ So, 13 Januar 2008 17:40 ] [ ID #1906803 ]

Re: Möglichkeit einer" header ("Location: http://ww

So wie ich das verstehe, soll der bereits ausgegebene Teil einen
Moment lang angezeigt werden, dann soll aber zu einer anderen Seite
weitergeleitet werden.
In diesem Fall müsste aber eine Weiterleitung in html gemacht werden:

echo '<meta http-equiv=3D"refresh" content=3D"5; URL=3Dhttp://
de.selfhtml.org/">';

Adrian
Adrian.Aulbach [ So, 13 Januar 2008 18:22 ] [ ID #1906805 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach ht

rower.91 schrieb:
> So wie ich das verstehe, soll der bereits ausgegebene Teil einen
> Moment lang angezeigt werden, dann soll aber zu einer anderen Seite
> weitergeleitet werden.

Das verstehst aber auch nur du so. Es geht hier um folgendes:

28.13. Warning: Cannot add header information - headers already sent ...
http://www.php-faq.de/q/q-fehler-header.html

> In diesem Fall müsste aber eine Weiterleitung in html gemacht werden:

> echo '<meta http-equiv="refresh" content="5; URL=http://
> de.selfhtml.org/">';

Meta-Refresh ist fehlerträchtig und von der Verwendung wird explizit
abgeraten. Wenn du eine Verzögerung willst, dann musst du den Redirect
mit JavaScript realisieren oder einfach auf den Schmarrn verzichten und
einfach einen Link im Dokument platzieren und dem Benutzer überlassen,
wie langsam er liest. Aber wie gesagt, darum geht es dem OP gar nicht.

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ So, 13 Januar 2008 18:39 ] [ ID #1906807 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach ht

Thomas Hamacher schrieb:
> Wenn du eine Verzögerung willst, dann musst du den Redirect
> mit JavaScript realisieren
Auch wenn ich selber zeitgesteuerte Umleitungen nicht mag - was ist (a)
für den Webmaster b) für den Benutzer) an (abschaltbarem) JS besser als
an Meta-Refresh?

Michael
mmueller12 [ So, 13 Januar 2008 20:59 ] [ ID #1906814 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach ht

Michael Müller schrieb:
> Thomas Hamacher schrieb:
>> Wenn du eine Verzögerung willst, dann musst du den Redirect
>> mit JavaScript realisieren
> Auch wenn ich selber zeitgesteuerte Umleitungen nicht mag - was ist (a)
> für den Webmaster b) für den Benutzer) an (abschaltbarem) JS besser als
> an Meta-Refresh?

Die Frage habe ich dir bereits in einem Thread schonmal beantwortet:

| The http-equiv attribute can be used in place of the name attribute
| and has a special significance when documents are retrieved via the
| Hypertext Transfer Protocol (HTTP). HTTP servers may use the property
| name specified by the http-equiv attribute to create an [RFC822]-style
| header in the HTTP response. Please see the HTTP specification
| ([RFC2616]) for details on valid HTTP headers.

Es wird zudem explizit davon abgeraten das so zu nutzen:

| Note. Some user agents support the use of META to refresh the current
| page after a specified number of seconds, with the option of replacing
| it by a different URI. Authors should not use this technique to
| forward users to different pages, as this makes the page inaccessible
| to some users. Instead, automatic page forwarding should be done using
| server-side redirects.

Da man aber bei einem server-side redirect AFAIK keine Verzögerung
einbauen kann bleibt wohl nur JavaScript.

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Mo, 14 Januar 2008 09:04 ] [ ID #1907606 ]

Re: Möglichkeiteiner" header ("Location: http://www.test.de")" Ausgabe nach h

On Mon, 14 Jan 2008 09:04:27 +0100 Thomas Hamacher wrote:
> Es wird zudem explizit davon abgeraten das so zu nutzen:

> | [...] as this makes the page inaccessible
> | to some users. Instead, automatic page forwarding should be done using
> | server-side redirects.

> Da man aber bei einem server-side redirect AFAIK keine Verzögerung
> einbauen kann bleibt wohl nur JavaScript.

Womit Du Dir dann aber genau das gleiche Problem eintrittst, vor dem
hier gewarnt wird, nur halt fuer eine andere Benutzergruppe.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Egal ob Lehrer oder Kehrer: Stefan - betteln, damit das Lachen niemals verstummt!
(Sloganizer)
Stefan+Usenet [ Mo, 14 Januar 2008 09:23 ] [ ID #1907610 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach

Stefan Froehlich schrieb:
> On Mon, 14 Jan 2008 09:04:27 +0100 Thomas Hamacher wrote:
>> Es wird zudem explizit davon abgeraten das so zu nutzen:
>
>> | [...] as this makes the page inaccessible
>> | to some users. Instead, automatic page forwarding should be done using
>> | server-side redirects.
>
>> Da man aber bei einem server-side redirect AFAIK keine Verzögerung
>> einbauen kann bleibt wohl nur JavaScript.
>
> Womit Du Dir dann aber genau das gleiche Problem eintrittst, vor dem
> hier gewarnt wird, nur halt fuer eine andere Benutzergruppe.

Ja. Du hast aber den entscheidenden Teil nicht zitiert. Das Javascript
ist genauso fehlerträchtig, aber es wird nicht vom W3C abgeraten es zu
nutzen. http-equiv erwartet einen gültigen HTTP-Header und "Refresh" ist
kein gültiger Header (RFC 2616).

Wenn man also wirklich automatisch Weiterleiten will (ich halte davon
sowieso nichts), dann kann man

a) Meta-Tags verwenden. Wohlwissend, dass der Refresh-Header nicht
standardkonform ist, das davon explizit abgeraten wird und das der
Benutzer es deaktivieren kann.
b) JavaScript (location-Objekt) verwenden. Das sollte mit jedem
scriptfähigen UA funktionieren (DOM Level 0), aber kann deaktiviert werden.

Man braucht also in jedem Fall eine Fallback-Lösung in Form eines Links,
den der Benutzer verwenden kann. Warum sollte ich jetzt Möglichkeit (a)
nehmen wollen?

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Mo, 14 Januar 2008 09:45 ] [ ID #1907611 ]

Re: Möglichkeiteiner" header ("Location: http://www.test.de")" Ausgabe nach h

On Mon, 14 Jan 2008 09:45:15 +0100 Thomas Hamacher wrote:
> >> | [...] as this makes the page inaccessible to some users.

> >> Da man aber bei einem server-side redirect AFAIK keine
> >> Verzögerung einbauen kann bleibt wohl nur JavaScript.

> > Womit Du Dir dann aber genau das gleiche Problem eintrittst, vor
> > dem hier gewarnt wird, nur halt fuer eine andere Benutzergruppe.

> Ja. Du hast aber den entscheidenden Teil nicht zitiert. Das
> Javascript ist genauso fehlerträchtig, aber es wird nicht vom W3C
> abgeraten es zu nutzen.

Was zunaechst einmal daran liegt, dass es mit dem W3C gar nichts
mehr zu tun hat, sondern auf einer wesentlich hoeheren Ebene
aufsetzt.

> Wenn man also wirklich automatisch Weiterleiten will (ich halte
> davon sowieso nichts), dann kann man

> a) Meta-Tags verwenden. [...]
> b) JavaScript (location-Objekt) verwenden. [...]

Oder man kann auch c) beides verwenden, die Varianten kommen
einander ja nicht in die Quere. "Refresh" mag zwar kein gueltiger
HTTP-Header sein, was zugegebenermassen sehr unschoen ist, aber
_stoeren_ darf so eine Angabe auch nicht, und weit verbreitet ist
sie nun einmal (was die Unterstuetzung betrifft, meine ich).

Eine automatische Weiterleitung ist recht hilfreich, wenn man auf
das Ende eines laengeren Prozesses am Server wartet (kein Anwender
moechte freiwillig eine Stunde lang immer wieder testweise auf einen
Link klicken). Fuer die Ueblichen(TM) Verwendungen auf Startseiten
u.ae. halte ich auch nichts davon.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Jucken mit Stefan - grandios werden mit Vergnügen.
(Sloganizer)
Stefan+Usenet [ Mo, 14 Januar 2008 10:46 ] [ ID #1907616 ]

Meta-Refresh (was: Re: Möglichkeit einer" header ("Location: http://www.test.de")&

Stefan Froehlich schrieb:
> On Mon, 14 Jan 2008 09:45:15 +0100 Thomas Hamacher wrote:

>>>> Da man aber bei einem server-side redirect AFAIK keine
>>>> Verzögerung einbauen kann bleibt wohl nur JavaScript.

>>> Womit Du Dir dann aber genau das gleiche Problem eintrittst, vor
>>> dem hier gewarnt wird, nur halt fuer eine andere Benutzergruppe.

>> Ja. Du hast aber den entscheidenden Teil nicht zitiert. Das
>> Javascript ist genauso fehlerträchtig, aber es wird nicht vom W3C
>> abgeraten es zu nutzen.

> Was zunaechst einmal daran liegt, dass es mit dem W3C gar nichts
> mehr zu tun hat, sondern auf einer wesentlich hoeheren Ebene
> aufsetzt.

Naja, das W3C lässt sich schon über Java- bzw. ECMAScript aus, so ist es
nicht. Aber da DOM Level 0 nie formal spezifiziert wurde, findet man da
natürlich nichts darüber.

Von Meta-Refresh wird aber explizit abgeraten. Das ist der Punkt.

>> Wenn man also wirklich automatisch Weiterleiten will (ich halte
>> davon sowieso nichts), dann kann man
>
>> a) Meta-Tags verwenden. [...]
>> b) JavaScript (location-Objekt) verwenden. [...]
>
> Oder man kann auch c) beides verwenden, die Varianten kommen
> einander ja nicht in die Quere.

Und was versprichst du dir davon? Ich weiss nicht, bei wie vielen UAs
jetzt Meta-Refresh funktioniert und aktiviert ist, aber ich weiss, dass
ich mich nicht darauf verlassen kann und das mir genau die Leute, die
die HTML-Spezifikation geschrieben haben, davon abraten.

Ich brauche also in jedem Fall eine Fallback-Lösung. Also kann ich auch
nur JS verwenden, was hier in jedem scriptfähigen Browser (sogar in NN
2) funktioniert.

Woher weisst du, dass die Unterstützung für Meta-Refresh größer ist, als
die Unterstützung für JavaScript?

> "Refresh" mag zwar kein gueltiger
> HTTP-Header sein, was zugegebenermassen sehr unschoen ist, aber
> _stoeren_ darf so eine Angabe auch nicht, und weit verbreitet ist
> sie nun einmal (was die Unterstuetzung betrifft, meine ich).

Sie stört insofern nicht, dass es auch nicht stören würde, wenn du
"Holla: Die Waldfee" als HTTP-Header verwendest oder proprietäre
HTML-Elemente verwendest.

Mal 'ne andere Frage: Erwartet der nicht vorhandene Refresh-Header einen
absoluten oder relativen URL? Hast du wirklich in der Dokumentation
jedes Browsers nachgelesen, wie das jetzt im einzelnen implementiert ist?

> Eine automatische Weiterleitung ist recht hilfreich, wenn man auf
> das Ende eines laengeren Prozesses am Server wartet (kein Anwender
> moechte freiwillig eine Stunde lang immer wieder testweise auf einen
> Link klicken).

Verstehe ich nicht. Wenn ich ein Script habe, das ewig braucht, dann
muss ich das dem Benutzer ja irgendwie mitteilen. Ich könnte mir etwas wie

<p>Das dauert jetzt was ...</p>

<?php
flush();
// Aufwendige Berechnung
?>

<script type="text/javascript">
if(window.location && window.location.href) {
window.location.href = 'fertig.php';
}
</script>

vorstellen, aber wo passt da jetzt der Meta-Refresh hin?

-v ;)

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Mo, 14 Januar 2008 12:50 ] [ ID #1907627 ]

Re: Meta-Refresh

On Mon, 14 Jan 2008 12:50:09 +0100 Thomas Hamacher wrote:
> Von Meta-Refresh wird aber explizit abgeraten. Das ist der Punkt.

Es wird abgeraten, damit weiterzuleiten, sondern _statt_dessen_
serverseitige Redirects zu verwenden. Will ich aus irgendwelchen
Gruenden eine Zeitverzoegerung, geht das, wie erwaehnt nicht,
insofern verstehe ich das "abraten" dann lediglich als (durchaus
deutliche) Warnung, sich auf die Wirkung zu verlassen.

> >> a) Meta-Tags verwenden. [...]
> >> b) JavaScript (location-Objekt) verwenden. [...]

> > Oder man kann auch c) beides verwenden, die Varianten kommen
> > einander ja nicht in die Quere.

> Und was versprichst du dir davon?

Eine Weiterleitung bei (wenigstens einigen, vermutlich der Mehrzahl)
derjenigen, die JavaScript aus irgendwelchen Gruenden abgeschaltet
haben.

> Ich brauche also in jedem Fall eine Fallback-Lösung. Also kann ich
> auch nur JS verwenden, was hier in jedem scriptfähigen Browser (sogar
> in NN 2) funktioniert.

Der Meta-Refresh _ist_ fuer mich die Fallback-Loesung!

> Woher weisst du, dass die Unterstützung für Meta-Refresh größer ist,
> als die Unterstützung für JavaScript?

Weder weiss ich das, noch halte ich es fuer relevant.

> Mal 'ne andere Frage: Erwartet der nicht vorhandene Refresh-Header
> einen absoluten oder relativen URL? Hast du wirklich in der
> Dokumentation jedes Browsers nachgelesen, wie das jetzt im einzelnen
> implementiert ist?

Was auch immer jemand implementiert, absolute URLs sollten jedenfalls
mit dabei sein. Wenn jemand JavaScript abschaltet, aber einen Browser
verwendet, der Meta-Refresh zwar auswertet, dabei aber absolute URLs so
interpretiert, dass nicht nur nichts, sondern etwas unerwuenschtes
passiert, dann kann ich ihm auch nicht mehr helfen. In allen anderen
Faellen passiert entweder das gewuenschte oder einfach gar nichts.

> Wenn ich ein Script habe, das ewig braucht, dann muss ich das dem
> Benutzer ja irgendwie mitteilen. Ich könnte mir etwas wie

> <p>Das dauert jetzt was ...</p>
>
> <?php
> flush();
> // Aufwendige Berechnung
> ?>
>
> <script type="text/javascript">
> if(window.location && window.location.href) {
> window.location.href = 'fertig.php';
> }
> </script>

> vorstellen,

Nicht das Skript braucht ewig, sondern ein davon losgeloester Prozess am
Server. Dann kann man dem Benutzer in bestimmten Intervallen den Status
mitteilen und, sobald der Prozess beendet ist, das Endergebnis.

> aber wo passt da jetzt der Meta-Refresh hin?

In so ein Programm natuerlich gar nicht, klar.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Stefan - nicht einer zappelt neurotischer und auch nicht anarchistischer.
(Sloganizer)
Stefan+Usenet [ Mo, 14 Januar 2008 13:59 ] [ ID #1907629 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach ht

..oO(Thomas Hamacher)

>Stefan Froehlich schrieb:
>> On Mon, 14 Jan 2008 09:04:27 +0100 Thomas Hamacher wrote:
>>> Es wird zudem explizit davon abgeraten das so zu nutzen:
>>
>>> | [...] as this makes the page inaccessible
>>> | to some users. Instead, automatic page forwarding should be done using
>>> | server-side redirects.
>>
>>> Da man aber bei einem server-side redirect AFAIK keine Verzögerung
>>> einbauen kann bleibt wohl nur JavaScript.
>>
>> Womit Du Dir dann aber genau das gleiche Problem eintrittst, vor dem
>> hier gewarnt wird, nur halt fuer eine andere Benutzergruppe.
>
>Ja. Du hast aber den entscheidenden Teil nicht zitiert. Das Javascript
>ist genauso fehlerträchtig, aber es wird nicht vom W3C abgeraten es zu
>nutzen. http-equiv erwartet einen gültigen HTTP-Header und "Refresh" ist
>kein gültiger Header (RFC 2616).

Du kannst in http-equiv reinschreiben, was Du willst. Kein Server wertet
da noch irgendwas aus, insofern ist der von Dir zitierte Abschnitt heute
praktisch bedeutungslos.

Auch die explizite Warnung des W3C vor Meta-Refreshs läßt sich
inhaltlich problemlos auf JS-Redirects ausdehnen, denn der Effekt auf
die Benutzbarkeit kann derselbe sein. Abgesehen davon bezieht sich diese
Warnung nicht auf den Meta-Refresh als solchen, sondern auf dessen
Mißbrauch zur Weiterleitung (Refresh != Redirect). Zur Aktualisierung
des aktuellen Dokuments nach einer gewissen Zeit es es eine durchaus
brauchbare Funktion.

Letztlich kann man sich, so man denn client-seitige Redirects verwenden
will oder muß, nur zwischen Pest und Cholera entscheiden. Beides ist
natürlich Mist.

>Wenn man also wirklich automatisch Weiterleiten will (ich halte davon
>sowieso nichts), dann kann man
>
> a) Meta-Tags verwenden. Wohlwissend, dass der Refresh-Header nicht
>standardkonform ist, das davon explizit abgeraten wird und das der
>Benutzer es deaktivieren kann.
> b) JavaScript (location-Objekt) verwenden. Das sollte mit jedem
>scriptfähigen UA funktionieren (DOM Level 0), aber kann deaktiviert werden.
>
>Man braucht also in jedem Fall eine Fallback-Lösung in Form eines Links,
>den der Benutzer verwenden kann. Warum sollte ich jetzt Möglichkeit (a)
>nehmen wollen?

Praktisch jeder mir bekannte Browser unterstützt Meta-Refreshs, bei JS
sieht's da schon anders aus.

Micha
Michael Fesser [ Mo, 14 Januar 2008 14:09 ] [ ID #1907630 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach ht

Michael Fesser schrieb:
> .oO(Thomas Hamacher)

>> Ja. Du hast aber den entscheidenden Teil nicht zitiert. Das Javascript
>> ist genauso fehlerträchtig, aber es wird nicht vom W3C abgeraten es zu
>> nutzen. http-equiv erwartet einen gültigen HTTP-Header und "Refresh" ist
>> kein gültiger Header (RFC 2616).

> Du kannst in http-equiv reinschreiben, was Du willst. Kein Server wertet
> da noch irgendwas aus, insofern ist der von Dir zitierte Abschnitt heute
> praktisch bedeutungslos.

Wenn das so ist, dann sollte man den Teil vielleicht mal als obsolete
kennzeichnen. Ich verstehe das so, dass es zur Zeit durchaus Server
(oder Servererweiterung) geben könnte die das noch auswerten. Mir ist
allerdings außer einem Output-Filter von mir für genau diesen Zweck
nichts dergleichen bekannt, was jedoch nicht heisst, dass es nichts gibt.

Ich hatte ja auch angenommen, dass der Refresh-Header gültig ist, bis du
mich eines besseren belehrt hast. Es scheint aber so, als ob die meisten
Browser neben dem proprietären Meta-Refresh auch den entsprechenden
HTTP-Header verstehen. Trotzdem wird 'Refresh' in meinem Filter jetzt
explizit rausgefischt.

> Auch die explizite Warnung des W3C vor Meta-Refreshs läßt sich
> inhaltlich problemlos auf JS-Redirects ausdehnen, denn der Effekt auf
> die Benutzbarkeit kann derselbe sein.

Richtig, deswegen darf ein Link (natürlich ohne JS) nicht fehlen.

> Abgesehen davon bezieht sich diese
> Warnung nicht auf den Meta-Refresh als solchen, sondern auf dessen
> Mißbrauch zur Weiterleitung (Refresh != Redirect). Zur Aktualisierung
> des aktuellen Dokuments nach einer gewissen Zeit es es eine durchaus
> brauchbare Funktion.

Es ging doch in diesem Thread ursprünglich um einen Redirect bzw. um
eine zeitverzögerte Alternative zum Location-Header.

> Letztlich kann man sich, so man denn client-seitige Redirects verwenden
> will oder muß, nur zwischen Pest und Cholera entscheiden. Beides ist
> natürlich Mist.

Och, so ne kleine Pest ... :)

>> Wenn man also wirklich automatisch Weiterleiten will (ich halte davon
>> sowieso nichts), dann kann man

>> a) Meta-Tags verwenden. Wohlwissend, dass der Refresh-Header nicht
>> standardkonform ist, das davon explizit abgeraten wird und das der
>> Benutzer es deaktivieren kann.
>> b) JavaScript (location-Objekt) verwenden. Das sollte mit jedem
>> scriptfähigen UA funktionieren (DOM Level 0), aber kann deaktiviert werden.

>> Man braucht also in jedem Fall eine Fallback-Lösung in Form eines Links,
>> den der Benutzer verwenden kann. Warum sollte ich jetzt Möglichkeit (a)
>> nehmen wollen?

> Praktisch jeder mir bekannte Browser unterstützt Meta-Refreshs, bei JS
> sieht's da schon anders aus.

Nenn mal bitte ein paar Browser, die nicht scriptfähig sind und
Meta-Refresh unterstützen. Mir ist spontan Lynx eingefallen, aber der
unterstützt Meta-Refresh nicht wirklich, bzw. ist es für den Benutzer
nicht besser als direkt einen Link (Fallback) zu verwenden.

Auf der anderen Seite kann der Script-Support deaktiviert sein, was bei
Meta-Refresh zwar auch möglich ist, aber wohl weniger häufig der Fall
sein wird (sagt mir mein Bauchgefühl).

Ach, wie du schon meintest: beides ist Crap. Ich hab es bisher auch erst
ein paar mal benötigt und selbst da wäre ich persönlich mit einer Lösung
ohne automatische Weiterleitung von Geisterhand zufriedener gewesen.

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Mo, 14 Januar 2008 16:03 ] [ ID #1907632 ]

Re: Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach ht

..oO(Thomas Hamacher)

>Michael Fesser schrieb:
>
>> Du kannst in http-equiv reinschreiben, was Du willst. Kein Server wertet
>> da noch irgendwas aus, insofern ist der von Dir zitierte Abschnitt heute
>> praktisch bedeutungslos.
>
>Wenn das so ist, dann sollte man den Teil vielleicht mal als obsolete
>kennzeichnen. Ich verstehe das so, dass es zur Zeit durchaus Server
>(oder Servererweiterung) geben könnte die das noch auswerten. Mir ist
>allerdings außer einem Output-Filter von mir für genau diesen Zweck
>nichts dergleichen bekannt, was jedoch nicht heisst, dass es nichts gibt.

Nicht das ich wüßte. Es gab da schon Diskussionen zu in <dciwam/> IIRC.
Es gab Server, welche einige dieser http-equiv-Angaben in korrekte HTTP-
Header ummünzen konnten, aber das ist Jahre her und in heutigen Servern
AFAIK praktisch nicht mehr implementiert.

>> Praktisch jeder mir bekannte Browser unterstützt Meta-Refreshs, bei JS
>> sieht's da schon anders aus.
>
>Nenn mal bitte ein paar Browser, die nicht scriptfähig sind und
>Meta-Refresh unterstützen.

Lynx, aber ...

>Mir ist spontan Lynx eingefallen, aber der
>unterstützt Meta-Refresh nicht wirklich, bzw. ist es für den Benutzer
>nicht besser als direkt einen Link (Fallback) zu verwenden.

Hmm, stimmt, gerade nochmal getestet. Er meldet den Refresh, aber zeigt
ihn praktisch nur als Link an und folgt nicht automatisch. Hatte ich
irgendwie anders in Erinnerung, aber hab's offensichtlich doch nur mit
was anderem verwechselt.

Micha
Michael Fesser [ Mo, 14 Januar 2008 16:16 ] [ ID #1907633 ]

Re: Meta-Refresh

Stefan Froehlich schrieb:
> On Mon, 14 Jan 2008 12:50:09 +0100 Thomas Hamacher wrote:
>> Von Meta-Refresh wird aber explizit abgeraten. Das ist der Punkt.

> Es wird abgeraten, damit weiterzuleiten, sondern _statt_dessen_
> serverseitige Redirects zu verwenden. Will ich aus irgendwelchen
> Gruenden eine Zeitverzoegerung, geht das, wie erwaehnt nicht,
> insofern verstehe ich das "abraten" dann lediglich als (durchaus
> deutliche) Warnung, sich auf die Wirkung zu verlassen.

Ich zitiere aus den W3C Recommendations:

| The http-equiv attribute can be used in place of the name attribute
| and has a special significance when documents are retrieved via the
| Hypertext Transfer Protocol (HTTP). HTTP servers may use the property
| name specified by the http-equiv attribute to create an [RFC822]-style
| header in the HTTP response. Please see the HTTP specification
| ([RFC2616]) for details on valid HTTP headers.

Daraus geht ganz klar hervor, dass der Wert des http-equiv-Attributes
ein gültiger HTTP-Header sein muss. Das kann dich stören, aber es ist
nunmal so. Über Sinn oder Unsinn lässt sich natürlich streiten.

Das ist das selbe wie mit relativen URLs beim Location-Header. Ich kenne
keinen UA der damit nicht klar kommt, dennoch steht im RFC das da ein
absoluter URL hin muss und nur das ist entscheidend.

Dann im selben Dokument:

| Note. Some user agents support the use of META to refresh the current
| page after a specified number of seconds, with the option of replacing
| it by a different URI. Authors should not use this technique to
| forward users to different pages, as this makes the page inaccessible
| to some users. Instead, automatic page forwarding should be done using
| server-side redirects.

Hier ist es, wie Michael schon angemerkt hat, nicht mehr so ganz klar
worauf sich sich der zweite Satz bezieht. Sollen Autoren den Refresh
jetzt vermeiden oder sollen sie nur den Refresh mit Weiterleitung auf
einen anderen URL vermeiden? Letzteres wäre ein Widerspruch zu dem oben
zitierten.

In den Web Content Accessibility Guidelines wird zudem explizit davon
abgeraten zeitverzögerte Redirects zu verwenden, die der Benutzer nicht
abschalten kann:

| Until user agents provide the ability to stop the refresh, do not
| create periodically auto-refreshing pages. [Priority 2]
|
| For example, in HTML, don't cause pages to auto-refresh with
| "HTTP-EQUIV=refresh" until user agents allow users to turn off the
| feature.

Es gibt zwar UAs die das abschalten erlauben, aber es gibt ebenso viele
die es nicht erlauben. JavaScript kann man AFAIK überall deaktivieren,
sofern es überhaupt vorhanden ist. Weiterhin heisst es an anderer Stelle
über das Meta-Element:

| The following are deprecated HTML examples. The first changes the
| user's page at page at regular intervals. Content developers should
| *not* use this technique to simulate "push" technology. Developers
| cannot predict how much time a user will require to read a page;
| premature refresh can disorient users. Content developers should avoid
| periodic refresh and allow users to choose when they want the latest
| information.

Das trifft natürlich auch auf JS zu, aber ich schrieb ja bereits, dass
ich kein Freund von verzögerten Redirects bin, egal ob mit JS oder ohne.

>> Ich brauche also in jedem Fall eine Fallback-Lösung. Also kann ich
>> auch nur JS verwenden, was hier in jedem scriptfähigen Browser (sogar
>> in NN 2) funktioniert.

> Der Meta-Refresh _ist_ fuer mich die Fallback-Loesung!

Für mich ist das ein Link.

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Mo, 14 Januar 2008 16:50 ] [ ID #1907636 ]

Re: Meta-Refresh

On Mon, 14 Jan 2008 16:50:43 +0100 Thomas Hamacher wrote:
> Ich zitiere aus den W3C Recommendations:

> [...]

> Daraus geht ganz klar hervor, dass der Wert des
> http-equiv-Attributes ein gültiger HTTP-Header sein muss. Das kann
> dich stören, aber es ist nunmal so. Über Sinn oder Unsinn lässt
> sich natürlich streiten.

Die Recommendations sind an der Stelle in einigen Punkten etwas
eigen, beispielsweise mit dem Verweise auf "RFC822-Style Headers"
(warum nicht RfC2616?). Jedenfalls ist <META http-equiv> ohnehin nur
fuer den Server _vorgesehen_, insofern waere genau genommen jede
Verwendung im Hinblick auf Beachtung durch den Browser falsch.
Laesst man sich aber darauf ein, bringt das pedantische Klammerun an
RfC2616 auch nicht mehr allzu viel.

> Das ist das selbe wie mit relativen URLs beim Location-Header. Ich
> kenne keinen UA der damit nicht klar kommt, dennoch steht im RFC
> das da ein absoluter URL hin muss und nur das ist entscheidend.

Das ist nicht das selbe: bei "Location" gibt es einen eindeutig
definierten Weg, es Richtig(TM) zu machen, fuer einen verzoegerten
Refresh gibt es _gar_ keinen Weg (ausser eben JavaScript, was aber
auf einer vollkommen anderen Schicht ablaeuft).

> In den Web Content Accessibility Guidelines wird zudem explizit
> davon abgeraten zeitverzögerte Redirects zu verwenden, die der
> Benutzer nicht abschalten kann:

Das ist, wenn wir darueber diskutieren, ob wir die Umleitung lieber
so oder lieber so realisieren wollen, relativ gleichgueltig.

> JavaScript kann man AFAIK überall deaktivieren,

Was allerdings sehr grobgranular ist - wegen einer Umleitung wird
das kaum jemand tun und wenn, dann mit argen Seiteneffekten.

> [...] aber ich schrieb ja bereits, dass ich kein Freund von
> verzögerten Redirects bin, egal ob mit JS oder ohne.

Ich habe nie gesagt, dass ich ein _Freund_ dieser Dinge bin. Es gibt
genau einen Anwendungsfall, wo ich das selbst verwende, und das ist
beim Upload und Parsen von Dateien, die gut und gerne einige 100 MB
umfassen koennen, mit einer Verarbeitungszeit von mehreren Stunden.

Mich hat hier nur das "statt" gestoert, ich sehe weiterhin im
<META http-equiv> eine sinnvolle Ergaenzung, _wenn_ man so etwas
tun will.

> > Der Meta-Refresh _ist_ fuer mich die Fallback-Loesung!

> Für mich ist das ein Link.

Das ist dann der Fallback fuer den Fallback. Den Link gibt es
natuerlich ebenfalls.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Stefan - deiner grübelt begaster sei es denn sympathischer.
(Sloganizer)
Stefan+Usenet [ Mi, 16 Januar 2008 18:23 ] [ ID #1909814 ]
PHP » de.comp.lang.php.misc » Möglichkeit einer" header ("Location: http://www.test.de")" Ausgabe nach html

Vorheriges Thema: Pfadangabe, Trennung von Verzeichnis und Dateiname
Nächstes Thema: großenPlan auf mehrere Einzelseiten (PDF?) verteilen