/** * Gestore amichevole degli errori * @see http://www.php.net/manual/en/function.set-error-handler.php */ function gestore_errori($livello, $messaggio, $file = 'Nessun file specificato', $linea = 0, $contesto = []) { global $_id_richiesta, $me, $sessione, $conf; // Carica MErrore anche se l'autoloading e' stato disabilitato _gaia_autoloader('MErrore'); // Ignora gli errori poco importanti if ($livello > ERRORIAMICHEVOLI_MINIMO) { return true; } try { $e = new MErrore(); } catch (Exception $e) { // Non riuscito, fallback alla modalita' classica... gestione_errori_fallback($livello, $messaggio, $file, $linea, $contesto); return true; } // Genera ID richiesta if (!$_id_richiesta) { $_id_richiesta = md5(microtime() . rand(500, 999)); } $codice = sha1(microtime() . rand(10000, 99999)); $e->update(['codice' => $codice, 'richiesta' => $_id_richiesta, 'livello' => $livello, 'timestamp' => (int) time(), 'messaggio' => $messaggio, 'file' => $file, 'linea' => (int) $linea, 'ambiente' => ['server' => $_SERVER, 'get' => $_GET, 'post' => $_POST], 'sessione' => $sessione->id, 'utente' => $me->id]); // Salta redirect nel caso di modalita' debug if ($conf['debug']) { return false; } // Eventualmente redirige alla pagina errore fatale if ($livello == E_ERROR || $livello == E_USER_ERROR) { redirect("errore.fatale&errore={$e}"); } return true; }