Pagina 1 van 2

Redirect na X aantal seconde met PHP

Geplaatst: 28 jan 2007, 09:38
door Salomon
Hallo,

Ik ben bezig met een contact formulier. Ik wil een redirect maken na 5 seconden, maar hoe moet dat? Bij header() kan je volgens mij geen tijd instellen.
Hoe zit dat in phpBB?

Geplaatst: 28 jan 2007, 10:44
door svenn
html

Code: Selecteer alles

<meta http-equiv="refresh" content="5;URL=http://www.jouwadres.nl/" />
kan ook met .htacess
http://www.mijnhomepage.nl/htaccess/red ... access.php

of javascript
http://www.tizag.com/javascriptT/javascriptredirect.php

Geplaatst: 28 jan 2007, 11:45
door Salomon
Maar dit is uit te schakelen in de browser.
Ik wil het het liefst met PHP, java kan worden omzeilt en .htacces is ook geen oplossing, het is maar voor één bestand.
Hoe doet phpBB dit? Ook met php volgens mij, maar hoe?

Geplaatst: 28 jan 2007, 12:09
door svenn
php doet dat via meta's de eerste optie.

Geplaatst: 28 jan 2007, 12:11
door svenn
zie ook dit script van php.net :

Code: Selecteer alles

<?
function g_redirect($url,$mode)
/*  It redirects to a page specified by "$url".
 *  $mode can be:
 *    LOCATION:  Redirect via Header "Location".
 *    REFRESH:  Redirect via Header "Refresh".
 *    META:      Redirect via HTML META tag
 *    JS:        Redirect via JavaScript command
 */
{
  if (strncmp('http:',$url,5) && strncmp('https:',$url,6)) {

     $starturl = ($_SERVER["HTTPS"] == 'on' ? 'https' : 'http') . '://'.
                 (empty($_SERVER['HTTP_HOST'])? $_SERVER['SERVER_NAME'] :
                 $_SERVER['HTTP_HOST']);

     if ($url[0] != '/') $starturl .= dirname($_SERVER['PHP_SELF']).'/';

     $url = "$starturl$url";
  }

  switch($mode) {

     case 'LOCATION': 

       if (headers_sent()) exit("Headers already sent. Can not redirect to $url");

       header("Location: $url");
       exit;

     case 'REFRESH': 

       if (headers_sent()) exit("Headers already sent. Can not redirect to $url");

       header("Refresh: 0; URL=\"$url\""); 
       exit;

     case 'META': 

       ?><meta http-equiv="refresh" content="0;url=<?=$url?>" /><?
       exit;

     default: /* -- Java Script */

       ?><script type="text/javascript">
       window.location.href='<?=$url?>';
       </script><?
  }
  exit;
}
?> 
bron : http://be.php.net/header

Geplaatst: 30 jan 2007, 18:06
door Salomon
Doet deze het nou na een instelbaar aantal sec?

Geplaatst: 30 jan 2007, 18:59
door Xanland
Jep!

Geplaatst: 30 jan 2007, 19:11
door Paul
Xanland schreef:Jep!
Ow? Leg is uit dan?

Geplaatst: 30 jan 2007, 19:21
door Xanland

Code: Selecteer alles

       header("Refresh: 0; URL=\"$url\""); 
       exit; 

     case 'META': 

       ?><meta http-equiv="refresh" content="0;url=<?=$url?>" /><?
Die 0 is toch de redirecteertijd?

Geplaatst: 30 jan 2007, 19:27
door Paul
Xanland schreef:

Code: Selecteer alles

       header("Refresh: 0; URL=\"$url\""); 
       exit; 

     case 'META': 

       ?><meta http-equiv="refresh" content="0;url=<?=$url?>" /><?
Die 0 is toch de redirecteertijd?
Maar dat is meta redirection, en als je nou is leest(Moeilijk iets ja ;)), dan zie je dat die dat niet wou ;)

Geplaatst: 30 jan 2007, 21:44
door Xanland

Code: Selecteer alles

     case 'REFRESH': 

       if (headers_sent()) exit("Headers already sent. Can not redirect to $url"); 

       header("Refresh: 0; URL=\"$url\""); 
       exit;
Hier zit de 0 redirecteertijd ook in en het is geen META!

Geplaatst: 08 feb 2007, 15:56
door Salomon
Kan je niet zoiets doen:

Code: Selecteer alles

<?php
if (5secondenverstreken) {
    header("Location: " . $url);
}
???

Geplaatst: 08 feb 2007, 15:57
door Coen
php is niet real-time! :)

Dat zal je dus niet lukken, kan wel met een javascriptje! ;)

Geplaatst: 08 feb 2007, 15:59
door Salomon
:( :o :? :shock: :x :cry:
Ik wil het natuurlijk het liefst met php, want zoals gezegd, javascript kan je uitschakelen...
:( :o :? :shock: :x :cry:

Geplaatst: 08 feb 2007, 16:01
door Coen
Dit is volgens mij de enige manier om dat een beetje netjes te doen:

Code: Selecteer alles

if (headers_sent())
        {
            echo "<script language=\"JavaScript\">";
            echo "document.location='index.php'";
            echo "</script>";
        } else {
            header("location: index.php");
        } 
Maar ja, het blijft JS.

Geplaatst: 08 feb 2007, 17:52
door Stijn Herreman
Zoals svenn al aangaf, en Xanland nog eens quote, kun je het wel met PHP doen.

@phropecy: wat bedoel je met 'php is niet realtime' ?

Geplaatst: 08 feb 2007, 20:12
door Coen
Php is niet realtime, als in je kunt een pagina niet aanpassen nadat deze door de server is verwerkt, behalve als deze opnieuw word aangevraagd of verstuurd (in geval van een formulier). Dit kan echter wel door andere technieken als JS en Ajax, maar daar hadden we het nu niet over... :roll:

Geplaatst: 08 feb 2007, 21:04
door Stijn Herreman
Prophecy schreef:Php is niet realtime, als in je kunt een pagina niet aanpassen nadat deze door de server is verwerkt, behalve als deze opnieuw word aangevraagd of verstuurd (in geval van een formulier). Dit kan echter wel door andere technieken als JS en Ajax, maar daar hadden we het nu niet over... :roll:
redirecten heeft niets te maken met het aanpassen van een verwerkte pagina.

anyway, dit topic is opgelost mag ik hopen?

Geplaatst: 08 feb 2007, 21:04
door Ramon Fincken
klopt,

als er ook maar 1 regel geoutput is, ook al is het een header die de bezoeker dus niet persee hoeft te zien kun je geen location redirect maken..

wat eventueel wel kan is een sleep functie gebruiken, icm je code die je op je DB wil uitvoeren bijvoorbeeld en daarna je location redirect..

Geplaatst: 08 feb 2007, 21:05
door Coen
Aanpassen van een pagina is wel het aftellen van 5 (of ander aantal) seconden en daarna redirecten en dát kan php dus niet!