Redirect na X aantal seconde met PHP

Zelf bezig aan een modificatie? Wij kijken graag mee..
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Salomon
Berichten: 3878
Lid geworden op: 14 feb 2006, 16:15

Redirect na X aantal seconde met PHP

Bericht door Salomon » 28 jan 2007, 09:38

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?

svenn
Berichten: 5001
Lid geworden op: 14 jul 2004, 13:00
Locatie: Kortrijk
Contacteer:

Bericht door svenn » 28 jan 2007, 10:44

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

Salomon
Berichten: 3878
Lid geworden op: 14 feb 2006, 16:15

Bericht door Salomon » 28 jan 2007, 11:45

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?

svenn
Berichten: 5001
Lid geworden op: 14 jul 2004, 13:00
Locatie: Kortrijk
Contacteer:

Bericht door svenn » 28 jan 2007, 12:09

php doet dat via meta's de eerste optie.

svenn
Berichten: 5001
Lid geworden op: 14 jul 2004, 13:00
Locatie: Kortrijk
Contacteer:

Bericht door svenn » 28 jan 2007, 12:11

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

Salomon
Berichten: 3878
Lid geworden op: 14 feb 2006, 16:15

Bericht door Salomon » 30 jan 2007, 18:06

Doet deze het nou na een instelbaar aantal sec?

Gebruikersavatar
Xanland
Berichten: 828
Lid geworden op: 23 jan 2005, 17:02
Locatie: Apeldoorn, The Netherlands
Contacteer:

Bericht door Xanland » 30 jan 2007, 18:59

Jep!
Mvg, Xanland.
phpBBmods
---
Muziekforum
---

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20297
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 30 jan 2007, 19:11

Xanland schreef:Jep!
Ow? Leg is uit dan?

Gebruikersavatar
Xanland
Berichten: 828
Lid geworden op: 23 jan 2005, 17:02
Locatie: Apeldoorn, The Netherlands
Contacteer:

Bericht door Xanland » 30 jan 2007, 19:21

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?
Mvg, Xanland.
phpBBmods
---
Muziekforum
---

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20297
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 30 jan 2007, 19:27

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 ;)

Gebruikersavatar
Xanland
Berichten: 828
Lid geworden op: 23 jan 2005, 17:02
Locatie: Apeldoorn, The Netherlands
Contacteer:

Bericht door Xanland » 30 jan 2007, 21:44

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!
Mvg, Xanland.
phpBBmods
---
Muziekforum
---

Salomon
Berichten: 3878
Lid geworden op: 14 feb 2006, 16:15

Bericht door Salomon » 08 feb 2007, 15:56

Kan je niet zoiets doen:

Code: Selecteer alles

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

Coen
Berichten: 5387
Lid geworden op: 03 aug 2004, 10:25

Bericht door Coen » 08 feb 2007, 15:57

php is niet real-time! :)

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

Salomon
Berichten: 3878
Lid geworden op: 14 feb 2006, 16:15

Bericht door Salomon » 08 feb 2007, 15:59

:( :o :? :shock: :x :cry:
Ik wil het natuurlijk het liefst met php, want zoals gezegd, javascript kan je uitschakelen...
:( :o :? :shock: :x :cry:

Coen
Berichten: 5387
Lid geworden op: 03 aug 2004, 10:25

Bericht door Coen » 08 feb 2007, 16:01

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.

Stijn Herreman
Berichten: 107
Lid geworden op: 24 dec 2006, 22:30
Locatie: Roeselare, West-Vlaanderen
Contacteer:

Bericht door Stijn Herreman » 08 feb 2007, 17:52

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' ?

Coen
Berichten: 5387
Lid geworden op: 03 aug 2004, 10:25

Bericht door Coen » 08 feb 2007, 20:12

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:

Stijn Herreman
Berichten: 107
Lid geworden op: 24 dec 2006, 22:30
Locatie: Roeselare, West-Vlaanderen
Contacteer:

Bericht door Stijn Herreman » 08 feb 2007, 21:04

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?

Gebruikersavatar
Ramon Fincken
Berichten: 2552
Lid geworden op: 27 nov 2005, 23:15
Locatie: Diemen
Contacteer:

Bericht door Ramon Fincken » 08 feb 2007, 21:04

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..
Freelance webdevelopment, including phpbb2 scripting!

Website founder van: phpBBinstallers.net phpBBantispam.com
Mods: zie op http://www.phpbb.com Blog in wording: RamonFincken.com

Coen
Berichten: 5387
Lid geworden op: 03 aug 2004, 10:25

Bericht door Coen » 08 feb 2007, 21:05

Aanpassen van een pagina is wel het aftellen van 5 (of ander aantal) seconden en daarna redirecten en dát kan php dus niet!

Gesloten