Hallo,
Ik wilde graag een gebruikersvriendelijke errormessage/-pagina laten zien als er zich ook maar 1 error voordeed. Na een tijdje zoeken kwam ik de volgende begrippen tegen:
- Error handling
- Output buffering
Dus ik ben daarop verder gaan focussen en ben dus nu zo ver:
header.inc:
footer.inc:
En dan in een willekeurige file:
Het principe werkt dus als volgt: alles wat geparsed wordt, wordt eerst in een buffer opgeslagen. Als het script correct wordt uitgevoerd en dus uiteindelijk bij footer.inc aankomt, dan stopt hij met bufferen en flusht hij hem (dan ziet de gebruiker dus de pagina). Doet er zich echter een error voor, dan stopt hij met bufferen en maakt hij de buffer leeg. Vervolgens print hij dat er iets mis is.
Alleen werkt dit niet
Als ik het script uitvoer krijg ik:
Wat doe ik fout?
Ik wilde graag een gebruikersvriendelijke errormessage/-pagina laten zien als er zich ook maar 1 error voordeed. Na een tijdje zoeken kwam ik de volgende begrippen tegen:
- Error handling
- Output buffering
Dus ik ben daarop verder gaan focussen en ben dus nu zo ver:
header.inc:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <? error_reporting(0); function ErrorHandler($errno, $errstr, $errfile, $errline) { ob_end_clean(); print "Ik denk toch echt dat je wat fout doet hoor :)<BR>"; } set_error_handler("ErrorHandler"); ob_start(); ?> <HTML> <HEAD> ... knip ... </HEAD> <BODY> |
footer.inc:
PHP:
1
2
3
4
5
| </BODY> </HTML> <? ob_end_flush(); ?> |
En dan in een willekeurige file:
PHP:
1
2
3
4
5
6
7
| include("header.inc"); print "Hallo, dit werkt goed!"; include($ongedefinieerde_variabele); print "en dit ook :P"; include("footer.inc"); |
Het principe werkt dus als volgt: alles wat geparsed wordt, wordt eerst in een buffer opgeslagen. Als het script correct wordt uitgevoerd en dus uiteindelijk bij footer.inc aankomt, dan stopt hij met bufferen en flusht hij hem (dan ziet de gebruiker dus de pagina). Doet er zich echter een error voor, dan stopt hij met bufferen en maakt hij de buffer leeg. Vervolgens print hij dat er iets mis is.
Alleen werkt dit niet
Hetgeen vóór de fout cleant hij wel, maar wat daarna komt geeft hij vrolijk door. Het is dus de bedoeling dat er niets wordt doorgegeven, behalve mijn errormessage.Ik denk toch echt dat je wat fout doet hoor
en dit ook
Wat doe ik fout?