PDA

Volledige versie bekijken : PHP error handling


Iasonic
%Europe/Berlin %488 %2009, 11:43
Ik zit met een vraag, ik heb een customError handler gemaakt maar heb het nog niet helemaal zoals ik het wil. Ik krijg nu iedere error in een mailtje wat dus niet deboeling is.
Wat ik graag zou willen is alle error's van een pagina in 1 mailtje. Hoe kan ik dat
doen?

Als ik de de variable message echo dan krijg ik ze wel allemaal te zien, maar in mijn mailtje dus niet. Hoe kan ik dit oplossen?

Alvast bedankt voor de moeite.


function customError($errno, $errstr, $errfile, $errline){
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: Webmaster <webmaster@iets.nl>'. "\r\n";
$headers .= 'From: Website ... <no-reply@iets.nl>' . "\r\n";

$message.= "Error:<b> ".$errstr ." on line ".$errline."</b><br />".$errfile;
mail("email@email.com","Error www.","$message",$headers);
}

set_error_handler("customError");

maikel
%Europe/Berlin %524 %2009, 12:34
Hoe ziet de functie die customError aanroept eruit? Deze functie roept customError waarschijnlijk net zo vaak aan dan jij mailtjes krijgt.

Het feit dat je alle errors tegelijk ziet komt doordat de loop gewoon doorgaat en alles achter elkaar plaatst.

Groet,
Maikel

Koen!
%Europe/Berlin %535 %2009, 12:51
Als je return false aan het eind van de functie zet, gaat na jouw error handler de standaard error handler in werking. Dan krijg je in ieder geval niet zoveel mailtjes als er een opeenstapeling van errors gebeurt.
(als het goed is)

Iasonic
%Europe/Berlin %470 %2009, 11:17
Begrijp er niks van, maar ik denk dat je dit bedoelt het onderstaande bedoelt.
Het onderstaande werkt niet, dan krijg helemaal geen melding meer via de mail.


function customError($errno, $errstr, $errfile, $errline){
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: Webmaster <webmaster@iets.nl>'. "\r\n";
$headers .= 'From: Website ... <no-reply@iets.nl>' . "\r\n";

$message.= "Error:<b> ".$errstr ." on line ".$errline."</b><br />".$errfile;
mail("webmaster@iets.nl","Error www.","$message",$headers);
return false;
}

set_error_handler("customError");