Bu diğer benzer dillere göre PHP daha yaygın nedeni PHP'nin geçmişi ile bir ilgisi yoktur. PHP erken sürümleri varsayılan olarak ayarlama "register_globals" (aslında, bu bile gerçekten erken sürümlerinde bir ayar olmuş olabilir) vardı. Register_globals sorgu dizesine göre global değişkenlerin tanımlanması için PHP söyler. Yani bu suretle böyle bir script sorgulanan eğer:
http://site.com/script.php?hello=world&foo=bar
... Script otomatik değer "dünya" ile bir değişken $ merhaba tanımlamak ve değeri $ foo istiyorum "bar."
Eğer anahtar değişkenlerin isimlerini biliyordu eğer böyle bir senaryo için, bu sorgu dizesi bu değişkenleri belirterek komut sömürmek mümkün oldu. Çözüm? Çekirdek komut bazı sihirli dize tanımlayın ve sonra tüm yardımcı v komut sihirli dize kontrol ve orada değilse kefaletle olun.
Neyse ki, hemen hemen hiç kimse artık register_variables kullanır, ancak birçok komut hala çok kötü yazılmış ve onlar bağlam seslendi eğer zarar görmelerine neden aptalca varsayımlar yapmak.
Şahsen, ben tamamen web kök dışına denetleyicileri ve şablonları tutar (en azından varsayılan kurulumunda) Symfony framework kullanarak şeyi kaçının. Tek giriş noktası ön denetleyicisi.