SORU
23 Kasım 2010, Salı


PHP: "Uyarı: Tanımsız değişken" ve "Dikkat: Tanımsız dizin"

Bir PHP komut dosyası çalıştırıyorum ve hata almaya devam edersen:

Tanımsız değişken: line 12 C:\wamp\www\mypath\index.php içinde user_location

Line 12 bu gibi görünüyor:

$greeting = "Hello, ".$user_name." from ".$user_location;

Bu hatalar ne demek?

Neden aniden ortaya? Yıllardır bu programı kullanmak için kullandım ve hiç sorun yaşamadım.

Ben bunları düzeltmek için ne yapmak gerekiyor?

Hızlı bir düzeltme var mı?

Bu Genel bir Referans soruinsanları çoğaltmak yerine, sorunu tekrar tekrar açıklamak zorunda olarak bağlamak için. Bu konuda gerçek dünyadaki çoğu cevapları çok özel, çünkü gerekli olduğunu düşünüyorum.

Meta tartışma ile ilgili

CEVAP
23 Kasım 2010, Salı


PHP Manual: büyük bilgelik

Bir varsayılan değer güvenerek başlatılmamış değişken sorunludur tek bir dosya içine dahil durumda aynı değişken kullanan başka bir adı. Ayrıca *9 büyük bir* * * * register_globals ile açık. E_NOTICE seviye hata durumunda verilir başlatılmamış ile çalışma değişkenleri, durum değil ancak bu ekleme elemanları dizi başlatılmamış. isset() dil bir yapı olmadığını tespit etmek için kullanılabilir değişken zaten başlatıldı.

Bazı açıklamalar:

Ancak PHP gerektirmez değişken bildirimi, tavsiye önlemek için bazı güvenlik açıkları ya da hataları nerede bir unutmak ver bir değer için bir değişken o daha sonra kullanmak üzere bir senaryo. PHP bildirilmemiş değişkenleri durumunda ne gelişimi sırasında çok düşük bir düzeyde OLUŞACAKTIR, hatta varsayılan, ama 13 ** Manuel tarafından bildirilen bir hata konudur.

Yol sorunu ile başa çıkmak için:

  1. Önerilen:Değişkenleri bildirin. Ya da kullanmak isset() eğer onları başvuran önce ilan olup olmadığını kontrol etmek için: $value = isset($_POST['value']) ? $_POST['value'] : '';.

  2. OLUŞACAKTIR custom error handler bir Set ve iletiler standart çıktı (günlük dosyası için belki de) bir terim. set_error_handler('myHandlerForMinorErrors', E_NOTICE | E_STRICT).

  3. Devre dışı raporlama OLUŞACAKTIR. Sadece OLUŞACAKTIR çıkarmak için hızlı bir şekilde error_reporting( error_reporting() & ~E_NOTICE ).

  4. @ operator ile hata bastırmak.

Not:Sadece güçlü noktası uygulamak için tavsiye edilir . ben^>1.

İlgili:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • brokenbellsVEVO

    brokenbellsV

    11 EYLÜL 2009
  • Grace Su

    Grace Su

    6 Ocak 2006
  • Trulia

    Trulia

    29 Kasım 2006