[php] Foutmelding niet weergeven maar mailen

Pagina: 1
Acties:

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 08-09 22:13
Ik heb vanmorgen al een topic geopend over foutafhandeling. Ik wil eigenlijk alle foute die op een pagina kunnen worden weergegeven via mail toesturen, zodat de bezoeker geen foutmelding te zien krijgt.

Ik ben al bezig geweest met het volgende
PHP:
1
<?if(error_reporting(E_ALL)){        Error();        echo "Deze pagina bevat fouten";}?>

Nu wil ik graag ook het volgende mee sturen.
$errno, $errmsg, $filename, $linenum
die moet ik eigenlijk uit error_reporting(E_ALL); halen. Weet iemand of dit wel kan?

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

lees de manual eens?
zie error handling.

Klaar voor een nieuwe uitdaging.


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 08-09 22:13
Met set_error_handler(); kun je toch alleen maar foutmeldingen die een user maakt sturen? Toch geen fouten die ik zelf in het script heb laten zitten?

Of zit ik helemaal verkeerd?

Mijn engels is nogal slecht vandaar dat ik niet alles snap wat er op php.net staat

Verwijderd

En hoe definieer jij een fout die een user maakt?

Das toch foute invoer die fouten in een phpscript oplevert? Dus eigenlijk foute code? Dus gaat het via error_handler?

  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 08-09 22:13
Oke heb heb de volgende code van php.net gecopieerd.
PHP:
1
<?// redefine the user error constants - PHP 4 onlydefine (FATAL,E_USER_ERROR);define (ERROR,E_USER_WARNING);define (WARNING,E_USER_NOTICE);// set the error reporting level for this scripterror_reporting (FATAL | ERROR | WARNING);// error handler functionfunction myErrorHandler ($errno, $errstr, $errfile, $errline) {  switch ($errno) {  case FATAL:    echo "<b>Fataal</b> [$errno] $errstr<br>\n";    echo "  Fatale error in lijn ".$errline." van bestand ".$errfile;    echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>\n";    echo "Afgebroken...<br>\n";    break;  case ERROR:    echo "<b>ERROR</b> [$errno] $errstr<br>\n";    break;  case WARNING:    echo "<b>WAARSCHUWING</b> [$errno] $errstr<br>\n";    break;    default:    echo "Onbekende error: [$errno] $errstr<br>\n";    break;  }}$old_error_handler = set_error_handler("myErrorHandler");echo $joa?>

Ben nu achter de echo vergeten een ; te zetten. Ik krijg nog steeds de normale
Parse error: parse error, expecting `','' or `';'' in d:\test.php3 on line 33

Als ik hem ernu wel achter krijg ik wel de foutmelding die ik zelf heb gemaakt.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

wat wil je met je laatste zin zeggen? :)

Klaar voor een nieuwe uitdaging.


  • Vulpecula
  • Registratie: April 2001
  • Laatst online: 08-09 22:13
Ik bedoel als ik nu wel die ; erachter zet dan krijg ik wel de foutmelding die ik zelf heb gemaakt.

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
Je kan alleen de foutmeldingen naar jezelf toe laten mailen, die je zelf gedefineerd heb, een parse error zorgt namelijk dat het script niet uitgevoerd wordt, dus daar kna je niks mee.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Dan zul je moeten goochelen met de error-logs...
Oftewel, alle errors/warnings laten loggen (staat ergens in de php.ini) en dan bijvoorbeeld met logcheck je logfile elk uur laten controleren.

Of een of andere "log-monitorende" tool gebruiken die elke nieuwe regel naar je mailt.
Pagina: 1