[PHP] Nette errors met set_error_handler

Gestart doorRik38 reacties416 weergaven

39 berichten · pagina 1 van 3

Rik

Lid · Topicstarter

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Dit is niet echt een tut, maar meer een handig iets waarmee je de site wat gebruiksvriendelijker maakt:

function handle_on_error($e_number, $e_message, $e_file, $e_line, $e_vars) {

         // Error
         $error_message = " === Er is een fout opgetreden! === 
<BR />" 
         $error_message .= "<strong>Bestand:</strong> " . $e_file . "
<BR />";
         $error_message .= "<strong>Regel(s):</strong> " .$e_line . " 
<BR />";
         $error_message .= "<strong>Bericht:</strong> " . $e_message . "
<BR />";
         $error_message .= "<strong>Datum en Tijd:</strong>". date(j-n-Y H:i:s) . "
<BR />";
         $error_message .= " ========== Einde fout ==========" 

         // Verzend error naar email
         error_log($error_message, 1, HIERJEMAIL@domain.ext);
            
         // Laat gebruiker zien dat er iets fout is gegaan
         echo "Er is een fout opgetreden tijdens het laden van de pagina.<br />";
         echo "De webmaster(s) zijn op de hoogte gesteld. Exuses voor het ongemak <br />";
     }
         
     
     // Gebruik de custom error-handeler in plaats van de standaard ingebouwde
     set_error_handler(handle_on_error); 
?>


Dit zal de error naar de mail van de webmaster sturen, en laat aan de grbuiker een bericht zien dat er iets fout is gegaan. Dat ziet er toch veel netter uit dan zon PHP error?

~ Rik / Guildjuhh
0
Berichten
536
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Leuk script,
alleen kan je misschien de error beter opslaan in een bestandje ipv mail, anders word je de hele tijd volgespamt yummie
0
Berichten
6.201
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Denk dat dit wel makkelijk om te bouwen naar een script dat de errors in een database zet wink
0
Rik

Lid · Topicstarter

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Natuurlijk kan dat ook door simpel het emailstukje te veranderen smile
even snel van php.net:

error_log($error_message, 3, "/var/tmp/my-errors.log");
0
Berichten
3.283
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Waar staat die 3 voor?
0
Berichten
536
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
0 message is sent to PHPs system logger, using the Operating Systems system logging mechanism or a file, depending on what the error_log configuration directive is set to. This is the default option.
1 message is sent by email to the address in the destination parameter. This is the only message type where the fourth parameter, extra_headers is used.
2 No longer an option.
3 message is appended to the file destination . A newline is not automatically added to the end of the message string.
4 message is sent directly to the SAPI logging handler.
0
Rik

Lid · Topicstarter

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Zoals cruwdy al zegt inderdaad smile
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Ik zou ze dan mooi in een database zetten dat je ergens een leuk overzichtje met fouten hebt. biggrin
0
Rik

Lid · Topicstarter

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Lennard schreef:
Ik zou ze dan mooi in een database zetten dat je ergens een leuk overzichtje met fouten hebt. biggrin
Zoals ik al zei, kun je op regel 11/12 alles zetten wat de error weghoud van je publiek biggrin
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
biggrin
Wij werken nog leuk met mailtjes hierzo. emoOok met een hele zooi omgevingsvariabelen erbij; leuk als je een keertje 100 fout-mails van 1 mb/stuk binnenkrijgt. cry
0
Rik

Lid · Topicstarter

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Ja idd als je echt goed wilt debuggen dan moet je ook de vardump (in mijn code is dat $e_vars) meeverzenden biggrin
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Ik weet niet uit mn hoofd welke we meesturen, maar volgens mij gewoon alle variabelen die geset zijn; wel zo handig als je wilt debuggen, en MySQL info en wachtwoorden zitten er niet eens bij, dus heel onveilig is het ook niet.
0
Erik

Lid

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Welk nummer moet je hebben voor in de MySQL? biggrin
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Moet je gewoon zelf wat veranderen in handle_on_error().
0
Erik

Lid

Berichten
7.109
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Snap het al.. Gewoon een query erin zetten?biggrin
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren