PHP içerik türü image / png ile yeni bir görüntüye yönlendirme tarayıcı,

4 Cevap php

Ben bir görüntü oluşturur, ve bu gibi (çoğunlukla) kullanılan bir php komut dosyası var:

<img src="user_image.php?id=[some_guid]" />

Komut o kimliği eşleşen bir görüntüyü göstermek için yazdığı bir sınıfını kullanır. Orada olsa yanlış gidebiliriz şeyler vardır ve bunların her biri bir istisna atar. Yani böyle bir şey var:

<?php

try {

    if( ! isset($_GET['id']) ) throw new Exception;

    $images = new User_Images;
    $images->display($_GET['id']);

} catch( Exception $e ) {

    header('location: images/link_error.png');

}

Ben tarayıcıdan bu görünüm, her şeyi ince - bir hata adres adres çubuğu images/link_error.png değişiklikler ve görüntüler yerine orada olsaydı.

Bu komut bir <img> etiketi kullanılan ve görüntü kapma bir hata olduğunu ama ne zaman, hiç görünmüyor.

Başlık yönlendirmeleri bu şekilde yürümüyor? Ben bunu başka bir yolu nedir?

update

Hiçbir sorun yok, tarayıcı mükemmel bu şekilde işi yönlendirir, sorunu benim tarayıcı yönlendirme sert yenileme içeri koymak önce iade edildi boş görüntü önbelleğe olmasıydı (Ctrl + {[(1) }] Firefox için) sabit ve normal gibi çalışmaya başladı.

4 Cevap

Hummm ... Benim tahminim

header('Location: images/link_error.png');

Çünkü headers were previously sent?

Dosyanızın üstüne bir ob_start() yerleştirmeyi deneyin ve sorunu çözüp çözmediğini görmek.


İşte bu hata ayıklamak için basit bir yoludur:

try {
    if (!isset($_GET['id'])) throw new Exception;

    $images = new User_Images;
    $images->display($_GET['id']);
} catch (Exception $e) {

    if (headers_sent() === false)
    {
        header('Location: images/link_error.png'); // also try using the absolute URL here
    }

    else
    {
        echo file_get_contents('http://www.google.com/intl/en_ALL/images/logo.gif');
    }
}

Google logosu gelirse, sen, veri çıkışı nereye iz veya ob_start() + ob_end_clean() kullanmanız gerekir.


this tag is really nice!

Sadece hata görüntüyü varsayılan kimlik (yani sıfır) vermek ve $ görüntüler-> ekran (0) kullanamadı? Sonra hata görüntü tam olarak başarılı bir vaka gibi ele alınır.

İlginç - Ben bir <img> etiketi için bir çağrı yönlendirme ile çalışmak için beklenebilir. Her neyse, o olmayabilir. Ben neden duymak ilgi duyarım. Herkes?

Akla gelen en kolay çözüm fopen() ve fpasshtru() kullanarak hata görüntüye geçmektedir.

İstenen birini yükleyerek sorunları olduğunda PhotoBucket gibi yerlerde bir sürü sadece bir hata görüntüyü görüntülemek. Bu genellikle sadece "Image Hata" ya ne diyor öncesi inşa resimdir. Görüntüler dinamik araya ediliyor olduğunda, bir 404 dönen daha bu başka daha birçok başka seçenek yok.