[PHP] Error handling icm output buffering werkt niet goed

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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:
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 :) Als ik het script uitvoer krijg ik:
Ik denk toch echt dat je wat fout doet hoor :)
en dit ook :P
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.

Wat doe ik fout?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

exit() roepen na je foutmelding? :)

anders parsed ie vrolijk door natuurlijk.

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
ACM schreef op 19 januari 2003 @ 21:34:
exit() roepen na je foutmelding? :)

anders parsed ie vrolijk door natuurlijk.
Altijd rot om te vergeten, heb ik ook eens in een grote For-loop gedaan :X Niet leuk 8)7

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Argh..... En daar zit je dan een half uur op te zoeken.... BEDANKT! :D