Notice: Undefined index: XXX - bu gerçekten önemli mi?

6 Cevap php

I benim hata raporlama seviyesini değişti beri error_reporting(E_ALL | E_STRICT); Bu hata karşı karşıya duyuyorum. I isset() kullanarak bu hatadan önlemek olabilir ama kod çok çirkin görünüyor!


Yani benim soru: Geri hata raporlama benim normal ayarlarına gidin ne olur? Gerçekten bir şey zaten tanımlı olmadığını bilmek önemli mi? o Uyarı hata olmadan düzgün woks çünkü.

I +10 girişleri var ve çünkü ben onları böyle olsun:

$username = $_POST['username'];

Ben de dosya üzerinde üst bu kullanarak değişkenleri önceden tanımlamak için çalıştı.

$username = null; ve $username = 0; ama onlar çalışmaz.

Teşekkürler.

6 Cevap

It does matter. Hatalar PHP yavaşlatmak ve gerçekten hataları atmak için değil, uygulama tasarımı olmalıdır. Diğer birçok dil tamamen PHP mutlu komut dosyası yürütülmesine devam durumlarda ölecek.

Geliştirirken, script hataları (hatta bir E_NOTICE) atmak gerekir.

Ben $ _POST değerleri kapmak ve sizin için denetimi yapmak için basit bir işlev oluşturma öneririm.

örneğin

<?php
function getPost($key)
{
    return isset($_POST[$key]) ? $_POST[$key] : null;
}

Edit:

Anlaşılan o how bu kullanmak için OP net değildi:

$username = getPost('username');

Bu POST dizideki hiçbir anahtar 'username' var demektir.

Genellikle, onlar may eksik değerine bağlıdır do uygulama diğer bölgelerine dalgalanma gibi, bunları denetlemek ve düzeltmek için iyi bir fikirdir.

Bildirimler bir amacı var: onlar kod olası hataları tespit etmek için bir araç demektir. Eğer önemsiz işlemleri için bildirimler tetikler kod yazmak ve bunu değiştirmek için istekli değilseniz, size haber raporlamasını devre dışı bırakmak ve böylece bir amaç üzerinde yararlı bir araç reddetmek ve daha gerekli daha işinizi yapacağız.

Tarihsel olarak, PHP akılda aşırı sadeliği ile dizayn (eski sürümleri sadece kodu sıfır hatları ile mevcut bir $ username olurdu) ama bu yaklaşım web gelişti gibi son derece yetersiz kanıtlamış oldu: sadece güvensiz ve sert kod yol sürdürmek için.

Bu önemli değil - Ben bir php uygulama garip davranışlar olsun hata günlüğü ben bakmak ve dokuz kez on üzerinden bir "UnDEFInED INDEX" mesajı kök neden düz beni neden ilk yerdir.

Tüm hatalar taşınabilirlik için, ne olursa olsun düzeyi, ele alınmalıdır.

Eğer uygulama sıkı hataları adresleme, ve uygulama does sıkı hata raporlama sahip bir sunucusunda dağıtıldığında değil inşa halinde, uygulama oldukça hızlı bir şekilde düşerek gidiyor.

En iyi bahis $ _POST ['username'] varlığını kontrol edin ve sonra o dönüş değerinin bağımsız hareket etmektir. Ile isset () dönüş değerini kullanarak doğru veya yanlış olabilir ya.

I ['username'] $ _POST tahmin ediyorum bazı açıklamalar bir kimlik doğrulama sisteminde kullanılmak içindir? Lütfen isset () fonksiyonu false döndürürse, bu nedenle, daha sonra kullanıcı adı gerekli olduğunu kullanıcıya ayrıntılı bir hata görüntüleyebilirsiniz.