|
Het zou ideaal zijn wanneer al onze scripts altijd zouden werken. In de praktijk is dit echter niet zo: updates van de serversoftware, hernoemen van bestanden, verhuizen van locatie e.d. zijn allemaal mogelijke oorzaken waarom scripts niet succesvol kunnen uitgevoerd worden.
Sterven met die() PHP geeft dan van huis uit een (Engelstalige) foutmelding. Deze is echter niet begrijpbaar voor de modale surfer. Omdat we gebruiksvriendelijk (willen) zijn, voorzien we in ons script een eenvoudige foutmelding zodat de bezoeker weet wat hij (niet) kan verwachten. Hiervoor gebruiken we de PHP-functie die(). Wanneer je een query bouwt, ziet je code er dikwijls zo uit: <?php // voorbeeld van een query $sql = "SELECT * FROM tabel ORDER BY id"; $result = mysql_query($sql) or die(mysql_error()); ?> De functie die() is nogal drastisch. Er wordt een foutmelding gegenereerd én de uitvoering van het script wordt gestopt waardoor ook de code die na de foutmelding komt, niet meer wordt uitgevoerd.  Zo kan het voorkomen dat de rest van de lay-out van je website niet getoond wordt! We kunnen dit vermijden door geen gebruik te maken van de functie die(). Sterven met trigger_error() Het zou beter zijn dat de foutmelding wordt getoond, maar de codes daaronder wel uitgevoerd worden. Daarvoor maken we gebruik van de functie trigger_error(). Hetzelfde voorbeeld van hierboven komt er dan zo uit te zien: <p>Gedeelte boven de query</p> <?php // een willekeurige query $sql = "SELECT * FROM tabel ORDER BY id"; if (!($result = mysql_query($sql))) { trigger_error(mysql_error()); } else { // hier de rest van de code als het goed is gegaan while ($row = mysql_fetch_array ($result)) { // hier de data echoën echo $row['datum']; } } ?> <p>Gedeelte onder de query</p> Op het scherm krijg je dit te zien: Dit is een veel gebruiksvriendelijkere methode van programmeren! Opgelet Let wel op met foutmeldingen. Crackers en ander gespuis kunnen hier dikwijls veel informatie uit halen die ze kunnen misbruiken om beveiligingslekken op te sporen. Beter is om mysql_error() te vervangen door "Fout", "Er is een fout opgetreden bij het uitvoeren van een script" of iets dergelijk. Dit is veel veiliger én duidelijker voor de bezoeker. <?php if (!($result = mysql_query($sql))) { trigger_error("Er is een fout opgetreden bij het uitvoeren van een script."); ?> Je eigen foutmeldingstekst wordt nu getoond in plaats van welke fout precies in het script voorkomt: 
|