Undefined index: php komut hatası

5 Cevap php

Bir php sayfasında ben kod şu var:

if($_REQUEST['c']!="") // I get error on this line itself. Why?
{
 $pidis=(int)($_REQUEST['c']);
}

Ben Undefined index hatası alıyorum.

Googling ben bir sayfa biz erişmeye çalışıyoruz (URL) parametreler olmadan erişim ise bu hata / uyarı alabilirsiniz anlamak için yönetmek. Ben bir parametre URL tanımlı değilse bunun yerine sadece hata / uyarı mesajı vererek boş dönmek gerektiğine inanıyoruz.

Ben ekleyerek hataları ve uyarı bastırmak mümkün olduğunu biliyoruz

error_reporting(E_ALL ^ E_NOTICE);

Ama bunu yapmak istemiyorum.

Bu aynı sayfa iş sadece bizim şirketin web sunucusu üzerinde ince ancak müşterilerimizin web sunucusu üzerinde çalışmaz.

Bu neden oluyor?

Bu sorunu çözmek için?

5 Cevap

Eğer $_REQUEST['c'] olmadığında $_REQUEST['c'] şey karşılaştırmak için çalışıyorsunuz çünkü bu hatayı alıyorsanız.

Çözelti karşılaştırarak daha önce isset() kullanmaktır. $_REQUEST['c'] yoksa karşılaştırma olmayacak çünkü bu uyarıyı kaldıracaktır.

if(isset($_REQUEST['c']) && $_REQUEST['c']!="")
{
 $pidis=(int)($_REQUEST['c']);
}

Bir E_NOTICE düzeyi hata ve seviyeniz error reporting hata gösterir olup olmadığını etkileyecektir. Müşterinizin server E_NOTICE seviye hata raporlama orada gösterir neden olan, açık vardır.

Bu, diğer sunuculara kodunuzu geçmeden önce hata bu tür yakalamak böylece her zaman E_ALL kullanarak geliştirmek için iyi bir fikirdir.

Başka bir çözüm, aşağıdaki kullanmaktır:

$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : '';

Sen de, sen tek tırnak final seti, örneğin içinde varsayılan bir değer koyarak, boş başka bir değer döndürmek isterseniz

$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : 'Default Value';

ya da örneğin bir tamsayı için, farklı bir değişken türünü döndürür:

$pidis = isset($_REQUEST['c']) ? $_REQUEST['c'] : 34;

PHP bir uyarı veriyor (which is not an error : it's just a notice) Varlığından olmayan bir değişkeni ya da var olmayan bir dizi elemanı kullanmaya çalışırken.

Bu sadece size yardımcı olmak ve bu bildirimleri örtmemelidir: Onlar size yardımcı olmak için buradayız - örneğin, değişken adları yazım hataları tespit edilmesine yardımcı olacak.

O her zaman mevcut değilse o dizi dizini kullanmadan önce, bunu kullanarak, burada olmadığını test isset gerekir:

if (isset($_REQUEST['c']) && $_REQUEST['c']!="") {
    // ...
}