Neden bu kod işi değil mi?

4 Cevap php

Bu kod neden çalışmaz kimse bana söyleyebilir misiniz?

<?php $err=1; ?>

<img src="334234234234234.gif" onError="<?php $err=0; ?>" />

<?php echo "<br />" . $err; ?>

Görüntü varsa bile, onerror hala yürütülür. Neden?

4 Cevap

HTML PHP değişkenlerini ayarlamak olamaz. Bunlar sadece sunucu üzerinde iken ayarlanabilir. IMG etiketinin onError yöntem PHP değişkenleri erişimi yoktur.

Sayfa yaşam döngüsü:

  1. (SUNUCU) sunucusu (değişkenleri, vb işleme) sayfanızı oluşturur
  2. (SUNUCU -> İŞVEREN), sunucu istemci bilgisayara sayfayı gönderir
  3. (MÜŞTERİ) html yüklenir, javascript koştu, ve herhangi bir hata yetiştirilir.

Eğer semantik yapılamaz madde 1 ile 3 öğe birleştirmek için çalışıyorsanız, unutmayın.

Eğer çalışıyorsanız ne yapmak tek yolu bu olay için bir javascript yöntemi ekleyin olmak ve onError yöntemi koştu ve eğer sunucuya iletişim olacaktır. Ama bu büyük olasılıkla sen yaramazsın biraz daha karmaşık olacak.

Php sunucu tarafı kodu bu yana, <?php $err=0; ?> aslında olur onError olmadığını idam alacak. Bunu yapmak için someother yöntem veya Javascript (veya başka bir istemci tarafı kodu) kullanmak isteyeceksiniz.

Yapmak isteyen tüm görüntü yük değilse ekrana bir değişken yazdırmak ise, (bir açılan kutu oluşturmak için onError="alert('ERROR: Image did not load');" kullanabilir veya üzerinde html değiştirmek için javascript kullanabilirsiniz Eğer sunucuya konuşmak istiyorsanız sayfa), ama, sen javascript ile bir formu göndermek veya bir AJAX yöntemi kullanmak ya gerekecek.

Sizin kod always bu çıktıyı üretecektir:

<img src="334234234234234.gif" onError="" />
<br />0

Içindeki php kod herhangi bir çıktı üretir, çünkü onError JavaScript işleyicisi boş.

Eğer gerçek kodu veya basitleştirilmiş kod gönderdiniz kod mi? Bu başarmak için çalışıyoruz ne belli değil.

Eğer bir dosyanın varlığını kontrol ediyorsanız PHP güzel bir fonksiyonu sunuyor

http://us.php.net/file_exists

Sayfasından Modifiye örnek.

<?php
$filename = '/path/to/334234234234234.gif';

if (file_exists($filename)) {
    echo "<img src='334234234234234.gif'/>";
} else {
    echo "The file $filename does not exist";
}
?>

Sorunuzu yanıtlamak için.

Even when the image exists, the onerror is still executed. Why?

OnError asla çalıştırılmaz. Bu yürütmek için görünür komut sonunda $ err değişkeni açıkça çıktı çünkü. Eğer yukarıdaki kodu kullanırsanız eğer ben bir JavaScript olayı dayanmadan amaçlanan sonuç olduğuna inanıyorum ne elde edebilirsiniz.