Frage zu flush

Begonnen von JensWagenknecht, 01 Juni 2002, 13:00:08

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

JensWagenknecht

An Euch Profis folgende Frage.

Ich habe ein Formular-Modul erstellt.

Nun soll nach ausfüllen, Prüfung, Eintrag in Datenbank ( geht alles) eine Bestätigung angezeigt werden und nach einer bestimmten Zeit wieder in die Index.php.
Mit flush geht es überhaupt nicht.
Er wartet die 3 Sekunden und gibt dennoch alles auf einmal aus.
Wie könnte man dies realisieren. Oder geht es gar mit dem Header Befehl?

Jens

Micro

*grübel*

Ich kenn auf Anhieb nur erst mal den hier "fflush" .. also mit 2 F ....

Gibts noch einen?

JensWagenknecht


JensWagenknecht

Habe gerade gesehen das es auch einen mit 2 f gibt.
Gleich mal probieren!

Jens

Micro

oh da guggst Du ;o)

Ich hab das hier wenns mal gar nich mehr geht .. auch nicht schlecht ;o)

fflush

Mirko

JensWagenknecht

Ne. fflush ist ja für geöffnetet dateien zuständig.
Hier geht es ja um das zurückgeben der Ausgaben.
Aber ich denke es wird an PHPNuke liegen. Es laufen ja vor dem Modul noch x Sachen ab.

jagdfalke

Also das könnte folgendermßen gehen:
Als erstes bekommt der Benutzer das Forumal zu sehen, dann wird es abgeschickt. In der Datei wird dann geprüft, ob alles stimmt, in die DB gescrieben etc. Danach soll man nach einer Zeit zurück zur index.php kommen.
Möglichkeit 1:
man lässt folgendes Ausgaben:

Zitat<script type="text/javascript">
<!--
function redirect()
{
window.location.replace("index.php");
}
setTimeout("redirect();", 1250);
//-->
</script>
<noscript>
<a href="index.php">Weiterleitung</a>
</noscript>

Dieser Code-Teil stammt aus dem XForum von DarkBoy.

Ich denke die 1250 ist die Zeit in Millisekunden, die gewartet werden soll. Also für drei Sekunden 3000 eintragen. Das JavaScript wartet 3000 Millisekunden und leitet dann weiter zur index.php. Darunter ist noch ein Link in einem noscript-Bereich für Browser ohne bzw mit deaktivitem JavaScript.
Anstelle dieses kleinen JavaScript kann man auch ausgeben lassen:

<meta http-equiv="refresh" content="3; URL=index.php">

Das wird aber z. B. vom W3 (verwalten z. B. HTML) nicht empfohlen, da es in manchen Fällen zum nichtanzeigen der Seite kommen kann.


Die andere möglichkeit ist, erst alles was im Ausgabepuffer ist, ausgeben zu lassen, das Dokument dann für 3 Sekunden anhalten. Sollte so aussehen:

flush();
sleep(3);

flush zuerst dass der Inhalt  ausgegeben wird und dann gestoppt, sonst würde gestoppt und dann der gesamte Inahlt ausgegeben.

Danach das ausgeben lassen:

entweder

<script type="text/javascript">
<!--
window.location.replace("index.php");
//-->
</script>
<noscript>
<a href="index.php">Weiterleitung</a>
</noscript>

Eine Verzögerung ist ja hier überflüssig, weil sie schon durch den Dateistopp erzeugt wurde. Alternativ steht logischerweise auch folgendes zur Verfügung:

<meta http-equiv="refresh" content="0; URL=index.php">

Das könnte man auch in den noscript-Bereich schreiben, allerdings muss diese Angabe so viel ich weis vom Webserver weiterverarbeitet werden, dann könnte es sein, dass es damit Probleme gibt.


Also wenn jetzt nur das Problem war, dass er am Anfang 3 Sekunden wartet und dann alles auf einmal ausgibt wie oben geschrieben folgendes schreiben:

flush();
sleep(3);

Dann wird der Ausgabeinhalt bis zu der Stelle gesendet und dann gewartet.



cu
jagdfalke

JensWagenknecht

das mit dem Java habe ich Berührungsängste, da immer bei mir eine Java Fhelmeldung kommt. Irgendwie bin ich zu blöd dies an die richtige Stelle zu bringen. Aber probieren geht ja bekanntlich über studieren.

Mit flush() und sleep (5) - das geht nun leider nicht. Der wartet die 5 Sekunden ab und haut alles raus.
Ich ahtte geschrieben:
echo "Danke";
flush();
sleep(10);
echo "Nun sollte es weiter gehen";

Kommen aber beide echo auf einmal raus.
Dat ist es halt. Ich wollte irgendwie auf Java verzichten.

Aber ich denke, da muß halt der User links klicken  :)