header refresh
Hoi, onderstaande heb ik in een php formulier staan, maar naar 4 sec gaat ie niet naar de andere site toe.
Dat komt omdat het:
kan volgens mij ook hoor (gebruik ik zelf namelijk). Je kunt inderdaad gewoon dit doen:
Bedankt voor jullie snelle reacties, heb nu onderstaande code alleen in een php bestand staan, maar na 4 sec gebeurt er niets?
Hallo all,
Is rechtstreeks uit php.net gehaalt. Lees ook dit comment effe, je moet altijd exit na een redirect header doen. Werkt dit wel:
Probeer anders dit eens:
Nu zal hij naar alle waarschijnlijkheid aangeven wat er mis gaat. Ik vermoed namelijk dat er al headers verzonden zijn. In de comment staat niet dat het altijd moet hoor. Maar dat het beter/makkelijker is als de refresh na een error komt, aangezien je de rest van je script daardoor niet meer laat uitladen. Sorry, ik denk dat de server niets meer laat zien, heb onderstaande code in een php bestand geplaatst en geupload, maar als ik de code opvraag laat ie een blanco pagina zien?
Bedankt voor je reactie. onderstaande code werkt wel en laat ie dan ook goed zien.
<form name="form" method="post" action="/contactform/contactscript.php">
<table width="400" border="0" cellspacing="2" cellpadding="2">
<tr>
<td width="200" valign="top" align="right">Your Name: </td>
<td width="200" valign="top" align="left">
<input type="text" name="name" size="25" maxlength="200" />
</td>
</tr><tr>
<td width="200" valign="top" align="right">Your Email: </td>
<td width="200" valign="top" align="left">
<input type="text" name="email" size="25" maxlength="100" />
</td>
</tr><tr>
<td width="200" valign="top" align="right">Your Comments: </td>
<td width="200" valign="top" align="left">
<textarea name="msg" cols="25" rows="4"></textarea>
</td>
</tr><tr>
<td width="200" valign="top"> </td>
<td width="200" valign="top" align="left">
<input type="reset" name="Reset" value="Reset" />
<input type="submit" name="Submit" value="Submit" />
</td>
</tr>
</table>
</form> Goedenavond Willemjan,
gr, Willemjan, het werkt nu, server doet het weer, sorry!
Toch is het best practice, je doet een redirect, waarom moet de zooi d'r onder dan nog worden uitgevoerd? En dus kan er wat gebeuren wat er helemaal niet zou moeten gebeuren...
Mjah, ik dacht dat die comment wel voldoende was. Maar iig, niet iedereen bouwt zo z'n code op hé. (Ik gebruik eigenlijk nooit location.)
Wanneer je de header refresh uitvoert op een pagina, zorg dan dat dit het eerste is wat er in je code gebeurt. (je kan nog wel een sessie setten en ook wat php controles loslaten, maar output VOOR je refresh is uit den boze)
Wanneer je na 4 seconden wil dat de pagina wordt doorgestuurd, dan is het wel zo netjes om een melding te geven. Dus er valt wel wat uit te voeren als je de header uitvoert. Ook verder PHP gebruik maakt niet uit, de pagina wordt gewoon geladen en na zoveel seconden doorgelinkt.
Het ligt geheel aan de opbouw van je code of het goed gaat, bij een goede opbouw is er niets aan de hand. @WillemJan en Jeej
Exit zorgt ervoor dat de pagina direct stopt met laden. HTML wat onder het script zit, wordt dus niet meer weergegeven: lelijk!!! Exit en die() en al dat soort lelijke functies zijn niet nodig zolang je netjes script. Netjes scripten is o.a. wat Robert hierboven vertelt. Ook als je iets in een if loop hebt zitten, en je wilt daarna niets meer weergeven: script netjes, zet de rest in een else {} ;-).
Dit zal keurig de opgegeven tekst na de header refresh laten zien, en je ook na 4 seconden verder sturen naar de opgegeven pagina. Een goede opbouw van je code is de oplossing voor je header problemen. Voorbeeld met Header refresh
kan volgens mij ook hoor (gebruik ik zelf namelijk).
Gewijzigd op 01/01/1970 01:00:00 door superwauwie
Bedankt voor jullie snelle reacties, heb nu onderstaande code alleen in een php bestand staan, maar na 4 sec gebeurt er niets?
Code (php)
Is rechtstreeks uit php.net gehaalt. Lees ook dit comment effe, je moet altijd exit na een redirect header doen.
Probeer anders dit eens:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
// Dit zet je bovenaan de root pagina. (dus de pagina waar het echt mee begint, dus de pagina die in je browser url staat)
ini_set('display_errors',1);
error_reporting(E_ALL);
?>
// Dit zet je bovenaan de root pagina. (dus de pagina waar het echt mee begint, dus de pagina die in je browser url staat)
ini_set('display_errors',1);
error_reporting(E_ALL);
?>
Nu zal hij naar alle waarschijnlijkheid aangeven wat er mis gaat. Ik vermoed namelijk dat er al headers verzonden zijn.
Staat er wel iets in de broncode? Als je daar de PHP code ziet staan ondersteunt je server (op het moment) geen PHP.
Bedankt voor je reactie. onderstaande code werkt wel en laat ie dan ook goed zien.
<form name="form" method="post" action="/contactform/contactscript.php">
<table width="400" border="0" cellspacing="2" cellpadding="2">
<tr>
<td width="200" valign="top" align="right">Your Name: </td>
<td width="200" valign="top" align="left">
<input type="text" name="name" size="25" maxlength="200" />
</td>
</tr><tr>
<td width="200" valign="top" align="right">Your Email: </td>
<td width="200" valign="top" align="left">
<input type="text" name="email" size="25" maxlength="100" />
</td>
</tr><tr>
<td width="200" valign="top" align="right">Your Comments: </td>
<td width="200" valign="top" align="left">
<textarea name="msg" cols="25" rows="4"></textarea>
</td>
</tr><tr>
<td width="200" valign="top"> </td>
<td width="200" valign="top" align="left">
<input type="reset" name="Reset" value="Reset" />
<input type="submit" name="Submit" value="Submit" />
</td>
</tr>
</table>
</form>
gr,
Ik bedoelde eigenlijk of je de php code in je broncode zag (van de echo), maar het werkt weer, dus maakt niet uit ;) Waarschijnlijk een apache restart oid.
WillemJan Zijderveld schreef op 12.04.2008 22:08:
In de comment staat niet dat het altijd moet hoor. Maar dat het beter/makkelijker is als de refresh na een error komt, aangezien je de rest van je script daardoor niet meer laat uitladen.
Toch is het best practice, je doet een redirect, waarom moet de zooi d'r onder dan nog worden uitgevoerd? En dus kan er wat gebeuren wat er helemaal niet zou moeten gebeuren...
Het ging me enkel om de manier waarop je het zei, ik bouw mijn code over het algemeen namelijk zo op dat er überhaupt niks meer valt uit te voeren als ik een header uitvoer.
WillemJan Zijderveld schreef op 12.04.2008 23:01:
Het ging me enkel om de manier waarop je het zei, ik bouw mijn code over het algemeen namelijk zo op dat er überhaupt niks meer valt uit te voeren als ik een header uitvoer.
Mjah, ik dacht dat die comment wel voldoende was. Maar iig, niet iedereen bouwt zo z'n code op hé. (Ik gebruik eigenlijk nooit location.)
Wanneer je de header refresh uitvoert op een pagina, zorg dan dat dit het eerste is wat er in je code gebeurt. (je kan nog wel een sessie setten en ook wat php controles loslaten, maar output VOOR je refresh is uit den boze)
Wanneer je na 4 seconden wil dat de pagina wordt doorgestuurd, dan is het wel zo netjes om een melding te geven. Dus er valt wel wat uit te voeren als je de header uitvoert. Ook verder PHP gebruik maakt niet uit, de pagina wordt gewoon geladen en na zoveel seconden doorgelinkt.
Het ligt geheel aan de opbouw van je code of het goed gaat, bij een goede opbouw is er niets aan de hand.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// Fout:
if(isset($_SESSION['user'])) {
echo "Welkom ".$_SESSION['user'];
exit;
} else {
echo "Welkom gast!<br />";
}
echo "<a href='?p=inloggen'>Log in</a>";
// Goed:
if(isset($_SESSION['user'])) {
echo "Welkom ".$_SESSION['user'];
} else {
echo "Welkom gast!<br />";
echo "<a href='?p=inloggen'>Log in</a>";
}
?>
// Fout:
if(isset($_SESSION['user'])) {
echo "Welkom ".$_SESSION['user'];
exit;
} else {
echo "Welkom gast!<br />";
}
echo "<a href='?p=inloggen'>Log in</a>";
// Goed:
if(isset($_SESSION['user'])) {
echo "Welkom ".$_SESSION['user'];
} else {
echo "Welkom gast!<br />";
echo "<a href='?p=inloggen'>Log in</a>";
}
?>
Exit zorgt ervoor dat de pagina direct stopt met laden. HTML wat onder het script zit, wordt dus niet meer weergegeven: lelijk!!!
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
session_start();
//set error reporting on
ini_set('display_errors',1);
error_reporting(E_ALL);
//check
if(!isset($_SESSION['loggedin'])){
//refresh
header("Refresh: 4; url=login.php");
echo 'U bent niet ingelogd. U wordt doorgestuurd naar de loginpagina';
}
else{
//hier rest van de html code indien nodig
}
?>
session_start();
//set error reporting on
ini_set('display_errors',1);
error_reporting(E_ALL);
//check
if(!isset($_SESSION['loggedin'])){
//refresh
header("Refresh: 4; url=login.php");
echo 'U bent niet ingelogd. U wordt doorgestuurd naar de loginpagina';
}
else{
//hier rest van de html code indien nodig
}
?>
Dit zal keurig de opgegeven tekst na de header refresh laten zien, en je ook na 4 seconden verder sturen naar de opgegeven pagina. Een goede opbouw van je code is de oplossing voor je header problemen.