Ho notato che diversi siti in caso di errore delle query Mysql fanno l’output della query e lasciano proseguire il programma, questo a volte pregiudica la sicurezza di molti sistemi come per esempio a volte la copertura con password di una pagina.
E’ anche vero che in fase di debug è molto utile avere la query sott’occhio in caso di errore, quindi come comportarsi?
La soluzione che propongo in questo tutorial è quella di usare una funzione propria anzichè mysql_query(), esempio:
<?php
In questa porzione di codice presuppongo che nelle impostazioni del vostro script ci sia una variabile chiamata $debug che sia impostata a true se siete in fase di debug (e quindi volete visualizzare a video gli errori) oppure a false se qualunque utente può visualizzarlo (quindi preferite mantenere nascosta la query).
//Impostazioni
$debug=true;
//Funzioni...
//Safe Query
function safe_query($sql) {
global $debug;
$qh=@mysql_query($sql);
if ($qh)
return $qh;
else {
if ($debug)
die('La query ' . $sql . ' ha restituito l'errore ' . mysql_error());
else
die('Spiacenti, errore interno');
}
}
?>
In entrambi i casi ho usato un die() ma ognuno potrà usare il proprio sistema per il log deglio errori o magari può inviarsi un’email tramite la funzione mail() di php per essere sempre a conoscenza degli errori che gli utenti riscontrano sul sito.
Questo vuol essere solo uno spunto per una più ampia personalizzazione, proponetemi le vostre idee!