[php] delay.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi, ik heb een login systeempje en na het inloggen wordt je ge-redirect naar een andere pagina met header("Location: pagina.php"). Dit werkt allemaal perfect, maar ik wil er een delay tussen. Zodat je ook nog even een melding kan zien dat je ingelogd bent.

Ik heb gezocht op google, en php.net en ik kwam uit op sleep() of usleep().
Maar deze 2 functies laten heel de pagina delayen
voorbeeld:

PHP:
1
2
3
4
5
<?
echo "U wordt doorverwezen";
sleep(5);
header("Location: pagina.php");
?>


Maar nu is de pagina gewoon 5 seconden bezig met laden, en daarna redirect hij meteen, dus de tekst "U wordt doorverwezen" wordt niet weergegeven. En de tekst moet juist 5 seconden in beeld zijn. En ik wil eigenlijk geen gebruik maken van meta refresh. Als dit kan met een javascript ofzo zou het ook goed zijn.

Ik heb ook al hier de search gebruikt, maar daar vond ik ook niks wat ik kon gebruiken

Wie heeft hier een oplossing voor? Bijvoorbeeld ergens een mooie functie die dat doet ofzo.

Alvast bedankt.

[ Voor 8% gewijzigd door Verwijderd op 19-03-2003 10:55 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

dat kan zo niet ;)
aangezien je na een echo al headers verstuurd hebt ;)
je zou het met javascript ofzo kunnen oplossen :)

[offtopic-edit]
gorgi_19 schreef op 19 March 2003 @ 10:44:
edit:

Erkens, ga eens #netwerken vervuilen en niet eerder zijn dan mij.. :( :+
:P
[/offtopic-edit]

[ Voor 49% gewijzigd door Erkens op 19-03-2003 10:46 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Je zit weer lekker clientside en serverside te mixen... Ik denk dat je beter een Javascript / DHTML oplossing voor de delay kan gebruiken en niet PHP, aangezien PHP zich afspeelt op de server en de client alleen het resultaat er van ziet.
edit:

Erkens, ga eens #netwerken vervuilen en niet eerder zijn dan mij.. :( :+

edit:

Tsk.. en nog trots er op zijn ook! :( Gorgi's stangen, kan je wel!

[ Voor 29% gewijzigd door gorgi_19 op 19-03-2003 10:55 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • cenix
  • Registratie: September 2001
  • Laatst online: 16-09 20:24
Probeer de flush() eens te gebruiken.
Flush verplaatst de huidige output al naar het scherm... zie voor meer info PHP manual op http://www.php.net/manual

PHP:
1
2
3
4
5
6
<?php
  echo "U wordt doorverwezen";
  flush();
  sleep(5);
  header("Location: pagina.php");
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op 19 maart 2003 @ 10:43:
dat kan zo niet ;)
aangezien je na een echo al headers verstuurd hebt ;)
je zou het met javascript ofzo kunnen oplossen :)
Kan wel als je output buffering gebruikt... en dat gebruik ik dus.

(link: http://www.php.net/manual/nl/ref.outcontrol.php)

Acties:
  • 0 Henk 'm!

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 17-09 17:32

Martijn02

/* No Comment */

flush gaat ook niet werken. Als er al data is verstuurd kunnen er geen heaeders meer verstuurd worden (omdat die boven de data moeten komen te staan) In het eerste geval kon je de header nog wel versturen omdat je output-buffering waarschijnlijk hebt aanstaan, als je flush gebruikt dan druk je eerst de data door waardoor je geen headers meer kan versturen...


Oplossingen:
- Javascript settimeout();
-Meta tag redirect

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Dan nog, hij blijft aan het laden en je ziet een 'halve' pagina verschijnen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • DaMinD
  • Registratie: Januari 2002
  • Laatst online: 23-06-2024

DaMinD

Leeg

Je kunt ook gewoon ff html gebruiken :

code:
1
2
3
<HEAD>
<META HTTP-EQUIV="Refresh" CONTENT="10;URL=pagina.php">
</HEAD>


Waar CONTENT voor de aantal seconden staat

Acties:
  • 0 Henk 'm!

  • ironx
  • Registratie: Augustus 2001
  • Laatst online: 01-07 19:42
Wat Martijn2 al zegt:

code:
1
<meta http-equiv="refresh" content="5;URL=http://www.tweakers.net">


Verd*mme, weer te laat :P

[ Voor 25% gewijzigd door ironx op 19-03-2003 10:53 . Reden: Damnit! :) ]


This posting is provided "AS IS" with no warranties, and confers no rights.


Acties:
  • 0 Henk 'm!

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 02-09 17:28

Rashann

Zoek de hond...

Verwijderd schreef op 19 March 2003 @ 10:50:
[...]


Kan wel als je output buffering gebruikt... en dat gebruik ik dus.

(link: http://www.php.net/manual/nl/ref.outcontrol.php)
Maar na een flush (cenix' idee) zijn je headers WEL verstuurd, en kun je dus geen headers meer versturen. Je zult het dus toch via JavaScript moeten doen...

[Edit] Tering.... ik word echt oud en traag... :( :P
Verwijderd schreef op 19 March 2003 @ 10:54:
[...]

Net geprobeerd, werkt niet, heeft precies hetzelfde resultaat als zonder...

tnx anyway
Nee, zoals hierboven al aangegeven is het refreshen vanaf de serverside (PHP dus) NIET mogelijk...

[ Voor 34% gewijzigd door Rashann op 19-03-2003 10:56 ]

If nothing is written below, I was the last to reply...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
cenix schreef op 19 March 2003 @ 10:46:
Probeer de flush() eens te gebruiken.
Flush verplaatst de huidige output al naar het scherm... zie voor meer info PHP manual op http://www.php.net/manual

PHP:
1
2
3
4
5
6
<?php
  echo "U wordt doorverwezen";
  flush();
  sleep(5);
  header("Location: pagina.php");
?>
Net geprobeerd, werkt niet, heeft precies hetzelfde resultaat als zonder...

tnx anyway

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het met javascript gedaan zoals Martijn02 zei.

<script language="JavaScript">
<!--
function redirect()
{
window.location = "pagina.php"
}
setTimeout("redirect();", 5000)
// -->
</script>

Het werkt goed nu.
tnx voor de moeite iedereen.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 19 maart 2003 @ 11:11:
Ik heb het met javascript gedaan zoals Martijn02 zei.

<script language="JavaScript">
<!--
function redirect()
{
window.location = "pagina.php"
}
setTimeout("redirect();", 5000)
// -->
</script>

Het werkt goed nu.
tnx voor de moeite iedereen.
ik zelf zou trouwens deze doen:
HTML:
1
<meta http-equiv="refresh" content="5;URL=http://www.tweakers.net">


waarom? aangezien dit door bijna elke browser wordt ondersteund :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb zo m'n redenen dat ik het niet met een meta refresh wil doen...

Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 17-09 14:46

TheDane

1.618

Verwijderd schreef op 19 March 2003 @ 11:19:
ik heb zo m'n redenen dat ik het niet met een meta refresh wil doen...
now it gets interesting ....

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 19 March 2003 @ 11:19:
ik heb zo m'n redenen dat ik het niet met een meta refresh wil doen...
waarom dan niet? en wel met javascript :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Omdat ik een universele functie wil hebben,. die ik dus op alle pagina's binnen de site kan gebruiken met 1 simpele aanroep... Gewoon op het plek waar ik em nodig heb.

En nu is dat gelukt :)

[ Voor 3% gewijzigd door Verwijderd op 19-03-2003 13:16 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 19 March 2003 @ 13:16:
Omdat ik een universele functie wil hebben,. die ik dus op alle pagina's binnen de site kan gebruiken met 1 simpele aanroep... Gewoon op het plek waar ik em nodig heb.

En nu is dat gelukt :)

En waarom zou dat dan alleen middels javascript kunnen werken??? Je hebt immers PHP ook al remember.

[ Voor 5% gewijzigd door Verwijderd op 19-03-2003 13:22 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

[nohtml]Javascript is zinloos, en een "Meta refresh" is een onzinterm

Het enige wat je doet met de tag, is het "naderhand" toevoegen van HTTP headers aan je html document. Je gaat daarmee dus een feitelijke workaround gebruiken die in jouw geval complete onzin is, gezien je vanuit PHP al gewoon headers kunt sturen. Gebruik het gedeelte van de http-equiv (http equivalent) attribuut als headernaam en de content-attribuut als header-value, en voila, 't werkt prima:

PHP:
1
2
3
4
Header ( "Refresh: 5;url=http://www.redirect.com/" );
echo '<html><head><title>woei!</title></head><body>';
echo 'U binnen 5 seconden doorgestuurd';
echo '</body></html>';


Dus javascript zou ik je af willen raden, gezien JavaScript, naast overbodig in dit geval, ook nog 's niet in de body van een html-document voor zou mogen komen.

Gebruik gewoon die headers, en een "meta-refresh", alsjeblieft, gebruik die term nooit meer ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

drm schreef op 19 March 2003 @ 13:39:
PHP:
1
Header ( "Refresh: 5;url=http://www.redirect.com/" );
ach ja natuurlijk, dat was de betekenins van de <meta>-tag
* Erkens gaat snel een aantal van zijn scripts aanpassen :X tnx :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
drm schreef op 19 March 2003 @ 13:39:
[nohtml]Javascript is zinloos, en een "Meta refresh" is een onzinterm

Het enige wat je doet met de <meta http-equiv="" /> tag, is het "naderhand" toevoegen van HTTP headers aan je html document. Je gaat daarmee dus een feitelijke workaround gebruiken die in jouw geval complete onzin is, gezien je vanuit PHP al gewoon headers kunt sturen. Gebruik het gedeelte van de http-equiv (http equivalent) attribuut als headernaam en de content-attribuut als header-value, en voila, 't werkt prima:

PHP:
1
2
3
4
Header ( "Refresh: 5;url=http://www.redirect.com/" );
echo '<html><head><title>woei!</title></head><body>';
echo 'U binnen 5 seconden doorgestuurd';
echo '</body></html>';


Dus javascript zou ik je af willen raden, gezien JavaScript, naast overbodig in dit geval, ook nog 's niet in de body van een html-document voor zou mogen komen.

Gebruik gewoon die headers, en een "meta-refresh", alsjeblieft, gebruik die term nooit meer ;)
ik bedoelde dat ik het gewoon niet via meta-tags wilde doen. Maar gewoon een stuk code nodig had wat ik midden in m'n script ook nog ergens neer kon gooien...
Het header ( "Refresh: 5;url=http://www.redirect.com/" ); werkt goed, dus die gebruik ik nu... tnx

En dat meta-refresh een onzin term is is op zich zelf al onzin, iedereen snapte wat ik bedoelde...
Pagina: 1