Thomas Lindgaard skrev:
> Davs
>
> Hvis man f.eks. kalder mysql_connect og ikke gider at have eventuelle
> fejl smidt i hovedet kan man jo sætte et @ foran - kan man også gøre
> lidt mere generelt?
>
> Hvis jeg har en flok sider, hvor der ikke står et eneste @, kan jeg så
> på en eller anden måde fortælle PHP, at hvis der sker en fejl, så skal
> fejlen ikke skrives ud men der skal laves et redirect til "Der er sket
> en fejl"- siden eller noget lignende (så brugeren ikke ser en
> halvfærdig side med 42 fejlmeddelelser)?
Ja, brug PHP's glimrende fejlhåndteringsfunktioner set_error_handler()
og trigger_error(). Se
http://dk.php.net/manual/en/features.error-handling.php.
Et eksempel:
<?php
# Fejl skal håndteres af vores hjemmelavede funktion fejl():
set_error_handler("fejl");
function fejl($type, $besked) {
echo "Fejl: $besked\n";
# Afslutter siden:
echo "</body></html>";
exit;
}
# Den her mislykkes og bliver fanget af fejlfunktionen:
mysql_connect("eksempel.dk", "kdk", "kdkd");
Vi kan også kalde fejlfunktionen manuelt vha. trigger_error(), hvis det
skulle blive nødvendigt:
if (!isset($noedvendigVariabel)) {
trigger_error("Variablen \$noedvendigVariabel er ikke sat.");
}
?>
--
Jonas Koch Bentzen