PHP veya MySQL hatası;

3 Cevap php

Benim seri ilanlar web sitesi özellikle PHP ve MySql kullanır.

Hata, (örneğin bir değişken bulunan değilse), ben göstermek için bir hata sayfası var istiyorum, bu mümkün mü? Her hata aynı hata sayfasına işaret için ve ben demek.

I htaccess düşünmeye duyuyorum, ama belki başka yolları da vardır?

MySQL ile aynı, orada nasıl yapılıyor?

Teşekkürler

3 Cevap

Şahsen, ben hata istisnalar her zaman kullanabilirsiniz (http://us.php.net/manual/en/class.errorexception.php) ...

Yani, benim kod başında, ben şu var:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

Sonra, ben dev bir try {} catch {} bloğu içinde herşeyi sarın. Ben yapmazsam yüzden ben "yakalamak" hata daha yüksek, ancak, bu istemciye bir hata mesajı görüntüler edebilirsiniz:

ob_start();
try {
    //Do Stuff Here, include files, etc
} catch (Exception $e) {
    ob_end_clean();
    //Log the error here, including backtraces so you can debug later
    //Either render the error page here, or redirect to a generic error page
}

Güzelliği bu hata her türlü yakalayacağız olmasıdır. Yani benim DB sınıfta, ben sadece (İstisna genişleten) bir DatabaseException atmak. Yani incelikle başarısız istiyorsanız benim arama yaptığınızda bunun için / catch deneyebilirsiniz, ya da ben onu üst try {} catch bloğu tarafından ele sağlayabilirsiniz.

Muhtemelen sizin için ne arıyor olacak PHP hata işleme yöntemlerine şeyler yapabilirsiniz. Iyi bir öğretici vardır here.

Sen yönlendirme yapmak için bir özel hata işleyicisi ekleyebilirsiniz. Birincisi, aksi takdirde gerekli header() işlevini çağırmak mümkün değildir, çıktı tamponlama etkinleştirin.

ob_start();

// This function will be our custom error handler
function redirect_on_error(int $errno , string $errstr) {
    // Ignore the error, just redirect the user to an error page
    ob_end_clean(); // Erase any output we might have had up to this point
    header('Location: error.html'); // Or wherever you want to redirect to
    exit;
}

set_error_handler('redirect_on_error'); // Set the error handler

// Your code goes here

ob_end_flush(); // End of the page, flush the output buffer