Home Ontwerp je site PHP Alternatief voor de functie die()

Alternatief voor de functie die()

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.

Foutmelding bij gebruik van de functie die()

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:

Code onder het script wordt wel uitgevoerd

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:

De gebruiksvriendelijke oplossing


3 + 1 =
 

GOOGLE adsense