コード例 #1
0
ファイル: errori.php プロジェクト: pizar/gaia
/**
 * 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;
}