Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

[PHP] wait Funktion

Hallo,
also folgendes Problem:
Ich möchte eine Weiterleitung von einer Seite auf eine andere machen, vorher soll aber noch für eine gewisse Zeit ein Text eingeblendet werden und dann soll erst die neue Seite angezeigt werden. Da ich dieses Problem nicht mit Javascript lösen möchte habe ich mir eine PHP Funktion geschrieben, leider funktioniert sie nicht so wie ich das möchte es kommt folgende Fehlermeldung:
Fatal error: Cannot redeclare sleep() in C:\www\devlop\class\form.php on line 67
die Fehlermeldung ist jeweils die letzte Zeile des Skripts.
Hier mal der Code

<?php
// Aufgrund einer Überschneidung mit dem PHP Funktionen neuer Name jetzt wait, anstatt sleep()
function wait($time)
{
  
  if(!empty(
$_COOKIE[&#39;TIMESTAMP&#39;]))
  
{
    
// Cookie existiert
    
$timestamp time();
    
    if (
$_COOKIE[&#39;TIMESTAMP&#39;]+$time <= $timestamp)
    
{
      
// Ausgabe
      
echo "HIER DIE GEWÜNSCHTE MESSAGE";
    }
    else
    {
      
// Seite neu laden
      
header("Location:".$_SERVER[&#39;PHP_SELF&#39;]);
    
}
  }
  else
  { 
    
// Cookie existiert nicht
    
$timestamp time();
    
setcookie(&#39;TIMESTAMP&#39;,$timestamp,$time);
    
header("Location:".$_SERVER[&#39;PHP_SELF&#39;]);
  
}
}
« Letzte Änderung: 22.01.07, 15:55:53 von ludden »

Antworten zu [PHP] wait Funktion:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo

Kenn mich mit Funktionen zwar nicht so super aus, daher auch nicht die Fehlermeldung.

Aber es gibt eine Funktion sleep() in php.Vielleicht liegt es dadran, dass die Funktion nicht angenommen wird.

Achja übrings die FUnktion sleep() macht glaube ich genau das, was du haben willst  ;D;D !

http://de3.php.net/manual/de/function.sleep.php

gruß
der_webi

Ach stimmt genau danke, die sleep() funktion macht aber nicht das , was ich möchte, das Skript wir damit nämlich zuerst angehalten und dann wird alles auf einmal ausgegeben
vor ablauft der Zeit sieht man garnichts. Deshalb hab ich eigentlich auch die Funktion geschrieben. Bin nur immoment etwas hin und hergrissen, weil ich nenbei noch etwas in Phyton mache und da gibt es die schön Funktion wait() :D

Also Problem dennnoch nicht gelöst jetzt meckert mein Browser:
Fehler:
Umleitungsfehler
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
    *   Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert oder abgelehnt werden.

Gibt es dafür eine Lösung
PS: Cookies aktiviert

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo

Ach stimmt genau danke, die sleep() funktion macht aber nicht das , was ich möchte, das Skript wir damit nämlich  zuerst angehalten und dann wird alles auf einmal ausgegeben
Stimmt nicht, das Script wird genau dann angehalten, wenn du die funktion sleep() auch hineinschreibst
als Beispiel:

<?php
#wird sofort angzeigt
echo "Hallo, Lass mich kurz überlgen wie alt du bist";
#für 10 sec nichts machen
sleep(10);
#wieder was ausgebne
echo "ah 3 Jahre bist du schon ;-)";
?>

das müsste es sein


deine Funktion tut nicht, wegen dieser zeile:
if ($_COOKIE['TIMESTAMP']+$time <= $timestamp)

$_COOKIE['TIMESTAMP']+$time ist immer größer als $timestamp, daher wird immer wieder
header("Location:".$_SERVER['PHP_SELF']);

aufgeurfen, somit ist klar das der Browser merkt,dass du ihn ver..,.en willst und er bricht den Script ab  ;D;D;D

Ist noch ein kleiner Denkfehler bei dir drin,
viel erfolg
der_webi
   






<?php
#wird sofort angzeigt
echo "Hallo, Lass mich kurz überlgen wie alt du bist";
#für 10 sec nichts machen
sleep(10);
#wieder was ausgebne
echo "ah 3 Jahre bist du schon ;-)";
?>

Ja , der Annahme war ich ja auch, aber dem ist nicht so es läuft so ab. Ich starte das Skript, dann passiert 10s garnichts und dann kommt alles auf einmal.

Zitat
if ($_COOKIE['TIMESTAMP']+$time <= $timestamp)

$_COOKIE['TIMESTAMP']+$time ist immer größer als $timestamp, daher wird immer wieder
header("Location:".$_SERVER['PHP_SELF']);

aufgeurfen, somit ist klar das der Browser merkt,dass du ihn ver.....en willst und er bricht den Script ab  ;D;D;D

Nunja, ich habe mir das ja eigentlich so gedacht $_COOKIE['TIMESTAMP'] bleibt immer gleich und $time auch, $timestamp wird ja bei jedem Funktionsaufruf neu "Definiert" , und müsste dann auch immer um 1(pro Sec um 1) größer werden und $timestamp wird dann nach $time-Sekunden >= $_COOKIE['TIMESTAMP']
Zitat
Ist noch ein kleiner Denkfehler bei dir drin,
viel erfolg
der_webi

Wenn er nicht schlimm ist , passt das schon :)

PS: Jossif wüsste die Antwort bestimmt, aber der ist ja jetzt pöse mit mir  :'(
« Letzte Änderung: 22.01.07, 20:09:57 von ludden »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Weiterleitung erst nach ein paar Sekunden?

Das geht ohne PHP und ohne JavaScript...

http://de.wikipedia.org/wiki/Weiterleitung

 

Zitat
HTML bietet eine Möglichkeit, einzelne Seiten vollautomatisch mit oder ohne Verzögerung umzuleiten. Der Syntax dafür lautet:

<meta http-equiv="Refresh" content="5; URL=http://www.example.org/">

In diesem Beispiel wird innerhalb von 5 Sekunden auf den URL http://www.example.org/ weitergeleitet. Diese Methode wird vom W3C nicht empfohlen.

Laut W3C halt nicht empfohlen weil da unnötig rumgeladen wird... für ne "normale" Weiterleitung daher ungeeignet, für dein Problem aber genau passend.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
@ludden:

Mach in das Script mal vor das sleep() ein flush() rein, das sorgt dafür, das alles, was vor dem sleep() ausgegeben werden soll, auch ausgegeben wird, PHP übergibt sonst alles auf einmal, sobald alle sleep() Befehle abgearbeitet sind:

<?php
#wird sofort angzeigt
echo "Hallo, Lass mich kurz überlgen wie alt du bist";
#für 10 sec nichts machen
flush();
sleep(10);
#wieder was ausgebne
echo "ah 3 Jahre bist du schon ;-)";
?>
@ludden:
Mach in das Script mal vor das sleep() ein flush() rein, das sorgt dafür, das alles, was vor dem sleep() ausgegeben werden soll, auch ausgegeben wird, PHP übergibt sonst alles auf einmal, sobald alle sleep() Befehle abgearbeitet sind:

Ah Bingo , genau das war nämlich immer mein Problem :) danke

Naja nach der ersten Vorfreude wurde sie auch gleich wieder gedämpft, die header() Funktion mag es irgendwie nicht, dass ich schon etwas ausgegeben habe.

Hier der Code

<?php
#wird sofort angzeigt
echo "Ich zähle bis 5,dann gehts zur Weiterleitung";

flush();
sleep(5);

#für 5 sec nichts machen
header(&#39;Location http://localhost/foo.php&#39;);
exit;
?>


Folgende Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at C:\www\devlop\foo\foo.php:3) in C:\www\devlop\foo\foo.php on line 8

Normalerweise mukkt er aber nicht wegen einem echo vor einem header() rum. Jmd eine Lösung?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Normalerweise mukkt er aber nicht wegen einem echo vor einem header() rum. Jmd eine Lösung?

Doch, wird er in jedem Fall tun. Ausnahme: du pufferst die Ausgabe mit ob_start(). Aber selbst dann dürfte der Puffer niemals vor einer header()-Anweisung geleert werden.

Sobald die geringste Ausgabe, und sei es ein Leerzeichen, an den Browser gesendet wird, kannst du keine header()-Funktion mehr ausführen.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

PHP wird dir immer "rummukken", wenn du vor dem Header schon was gesendet hast!

Wenn du eine ECHO Ausgabe machst, sendest du automatisch einen Datei-Header. Sonst wüsste der Browser nicht, was er darstellen soll. Nach einer Ausgabe kannst du also keine Header - Ausgabe mehr machen.

Schau mal hier nach, es gibt ja noch andere Möglichkeiten der Weiterleitung:

http://www.computerhilfen.de/webmaster-url-weiterleitung.php3

Du könntest also auch die Javascript-Funktion per PHP ECHO Befehl ausgeben...

« Letzte Änderung: 23.01.07, 15:20:37 von nico »

@nico: Die Möglichkeiten eine Weiterleitung zu machen kenn ich ja(denk ich mal), ich kenn aber nicht die Möglichkeit, vor der Weiterleitung noch einmal für eine gewisse Zeit einen Text einzublenden. Zumindest hab ich jetzt beim überfliegen des Textes nichts gesehen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

hi
was spricht denn gegen die lösung von mati ?

gruß
der_webi

hi
was spricht denn gegen die lösung von mati ?

gruß
der_webi

Huch, die hab ich garnicht gesehen ;)   :-[

« PHP: $_SESSION[] mit variablen füllen und auslesen!?!? geht das...Array verschachtelung »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Zugriffszeit
In Milisekunden angegebene Zeit, die das Speichermedium zum Erreichen der gesuchten Daten braucht. Die Zeit ist abhängig vom technischen Verfahren des Mediums sowie ...

Reaktionszeit
In der Elektronik versteht man unter der Reaktionszeit die Zeit, die ein Flachbildschirm benötigt, um die Farbe und die Helligkeit eines Bildpunktes zu ändern. ...

Hypertext
Hypertext ( zu Deutsch: Übertext) ein ein von dem Informatiker Theodore L. Nelson in den sechziger Jahren geprägter Begriff für Text, der dreidimensional g...