Neden "Undefined index" alıyorum

4 Cevap php

Bu kodu çalıştırdığınızda:

<?php
if (preg_match('/^[a-z0-9]+$/', $_GET['p'])) {
  $page = realpath("includes/$_GET[p].php");
  if ($page) {
    include $page;
  }
}
?>

Ben bu hatayı alıyorum:

Notice: Undefined index: on line 3 index.php p

4 Cevap

Ne Bamya endeksi dizide ayarlanır olmadığını kontrol için dedi.

Ayrıca parsing an array index in a string Eğer dizi etrafında parantez kullanmak gerekir ve bu bir dize ise tek tırnak ile endeksi kaçmak gerekir için.

$page = realpath("includes/{$_GET['p']}.php");

Ancak kullanıcı tarafından önerilen dosyaları da dahil olmak üzere, en güvenli yolu, bir dizi dosyaları aramak ve orada varsa sadece onları dahil etmektir.

Gerçek bir sorun var. PHP Notice bir Warning veya Error verir. Temelde, script p URL parametresini almıyor. Bu yüzden kullandığı'' ve günlüğüne bir uyarı verir. Eğer işlenen sayfadaki bu mesajı görürseniz, E_ERROR | E_WARNING PHP.ini gibi bir şey php hata bildirimini ayarlayın

Bir dizi anahtarı ... var olup olmadığını kontrol etmek için array_key_exists() içine bak. Ama senin durumunda ben kullanıcı girişi ile çalışma uzman fonksiyonların filter sınıf almak öneririz.