php isset Bir form kontrol ihtiyacım var?

5 Cevap php

I trying to understand if a isset is required during form processing when i check $_REQUEST["input_name"] if no value is passed it doesn't cry about it and php doesn't throw out an error if you are trying to access a array item which doesn't exist....i can use if($_REQUEST["input_name"]).. what about "empty" even in those cases i can use if()

Thnks

5 Cevap

if($_REQUEST["input_name"])

"input_name" yoksa bir uyarı (hata) atmak, böylece isset () önerilir.

Bir formu test ediyoruz sürece, form girişi yakalamak için $_REQUEST superglobali kullanmanızı tavsiye etmem. Eğer gerçekten iyi bir nedeniniz yoksa, bunun yerine $_GET veya $_POST kullanın.

Ayrıca, isset() ve array_key_exists() Bir dizileri bağlamda daha net olmasına rağmen array_key_exists(), hem dizi anahtarları ile ilgili aynı hile yapmak.

Ben kullanmanızı öneririz:

error_reporting(E_ALL); //E_ALL - All errors and warnings

geliştirme ortamında, daha iyi uygulamalar uygulanan olabilir nerede açığa gibi, bunlar kullanılmadan önce değişkenleri bildirmek için böyle başarısızlık, vb

Hata düzeyleri farklı tipi vardır. Ayarlanmamış bir değişken kontrolü, sadece bir haber atar. Sizin error reporting muhtemelen bu görmezden ayarlanır. Her zaman kullanmak en uygulamadır isset Eğer rağmen it does have its gotchas değişken, ayarlanmış olup olmadığını kontrol etmek istiyorsanız.

Örneğin, sadece yukarıda ne yapıyorsun $_REQUEST["input_name"] dize "0" ise yapıyor, bu yanlış değerlendirecek. Ayrıca bu kurabiye ve benzeri gibi şeyler tarafından etkilenmiş olabilir ve genellikle kötü mimarisi için bir kod koku olduğu gibi, başlamak için $ _REQUEST kullanmak iyi bir fikir değildir.

$ _REQUEST kullanarak hemen hemen kesmek. Sen (ne yapıyorsun bağlı) $ _POST veya $ _GET kullanarak gerektiğini ve isset () kullanmalısınız.

Ben PHP okuduğunuz her kitap olduğunu söylemek gibi görünüyor.

Genellikle, en azından test için, php.ini veya kod ya (tüm hataları ve uyarıları) error_reporting (E_ALL) kullanarak E_ALL raporlama hatası set; (Look into adding E_STRICT de.) Daha Sonraya tutmazsan o ince yanlış bir şey var daha, ön bir hata hakkında bariz bir haber almak için.

(O GET, POST ve Cookie değerlerini içerir) çok muğlak olan $ _REQUEST, kullanmaktan kaçının ve bu gerçekten ne anlama geldiğini, ve isset($_POST["input_name"]) ile kontrol yoksa $ _POST veya $ _GET kullanın

Kısa cevap "Evet" dir. :)