# header() - Location nach Zeit ausführen



## rflx (16. April 2007)

Hallo zusammen,

bin jetzt schon eine Weile dran herauszufinden wie man einen header("Location: x"); Befehl nach einer gegebenen Zeit ausführen kann.

Im Prinzip sollte daraus eine einfache PHP-Weiterleitung nach einer gewissen Zeit entstehen.

Für andere Lösungsmöglichkeiten wäre ich auch offen.

Danke und freundliche Grüsse

rflx


----------



## Gumbo (16. April 2007)

Bei dem inoffiziellen Header-Feld „Refresh“ ist die Angabe einer Verzögerung möglich:
	
	
	



```
Refresh: n; url=http://example.net/
```
Manche Webbrowser unterstützen dies paradoxerweise allerdings nur als HTTP-äquivanlentes meta-Element.


----------



## SnEaKy (16. April 2007)

Also ich würde dir die header-methode nicht empfehlen. Den sollten schon mal header-informationen gesendet worden sein, so kannes kein zweites mal passieren.
ein Lösungsvorschlag wär folgender: 

```
<meta http-equiv="refresh" content="3; URL=index.php">
```
die "3" bedeuten 3 Sekunden wartezeit.
Es gibt auch noch ne JavaScript-Variante, aber die kann ich nicht auswendig.
Hoffe das hilft dir schonma weiter.


----------



## rflx (16. April 2007)

Hallo Gumbo,

Danke für deine Antwort.

meinst du das so:

```
header ("Refresh: 10; http://example.net/");
```
?

@SnEaKy
Kenne die Meta-Variante, doch diese hilft mir nicht weiter. Trotzdem Danke.

Freundliche Grüsse

rflx


----------



## Martin1983 (16. April 2007)

Wenn du nichts anzeigen willst kannst du es folgenmaßen lösen. (Finde ich jedoch unsinnig , da du vorher keine Inhalte ausgeben kannst!)

```
<?php
$secondsToSleep = 10;
$newLocation    = 'http://www.zielurl.tld';

if (!headers_sent()) {
    sleep($secondsToSleep);
    header('Location: ' . $newLocation);
}
?>
```

Wenn du während des Wartens HTML-Inhalte anzeigen willst würde ich es mit dem entsprechenden Meta-Tag machen. Alternativ solltest du die Ziel-URL jedoch auch noch als Link auf der Seite positionieren damit der Benutzer der die automatische Weiterleitung deaktiviert hat auch zum Ziel gelangen kann.

Von JavaScript würd generell immer absehen, wenn es mit anderen Mitteln zu lösen ist, da einige Benutzer immer noch JavaScript deaktiviert bzw. nur bei vertrauenwürdigen Seiten zulassen!


----------



## rflx (16. April 2007)

Heyla Martin,

Danke für deine Alternative! 

Habe jetzt noch eine Variante aus dem php.net Forum gefunden.

```
<?php

function redirect($u , $s = 0) {
    session_write_close();
    if($s < 1)
        header("Location: " . $u);
    exit("
        <meta
        http-equiv=\"refresh\"
        content=\"{$s};url={$u}\"
        >
        <script>
        function doRefresh() {
            window.location = '{$u}';
        }
        doRefreshTimeout = setTimeout(\"doRefresh()\" , ".($s*1000).");
        </script>
    ");
}

?>
```


----------



## tobee (16. April 2007)

rflx hat gesagt.:


> Heyla Martin,
> 
> Danke für deine Alternative!
> 
> ...


Aber wieso denn die Session Daten speichern und danach die Session beenden, bevor man die Weiterleitung macht?


----------



## Martin1983 (16. April 2007)

rflx hat gesagt.:


> Heyla Martin,
> 
> Danke für deine Alternative!
> 
> ...



Ich bin zusätzlich der Meinung das der exit()-"Abschnitt" mit Sicherheit keinen annähernd validen HTML-Code erzeugt :suspekt:. Für mich wirkt die Funktion "aus dem Kontext" gerissen!

Wenn ich heute Abend von der Arbeit komme und das Problem noch besteht, schreib ich dir mal schnell was ordentliches )


----------



## alter_user (1. Juli 2019)

Dürfte ich das auch mal sehen, ich stehe vor einem ähnlichen Problem!
Gruß der einsiedelnde


----------

