2010-11-19 33 views
0

Bir süredir PHP yapıyorum, hiç yardıma gerek duymadım, ama bu sefer kafam karıştı. Tek bir eko ifadesine sahip tek bir kod satırım var.PHP Değişkenleri için Parametreler

Sorun: URL parametreleri, aynı ada sahip PHP değişken değerlerini otomatik olarak varsayıyor.

echo $: Böyle 'var_name' adlı bir değişkene sahip

http://www.example.com?var_name=abc123

ve 1-satır PHP script: Örneğin, böyle 'var_name' adlı bir parametre ile bir URL'ye sahip var_name;

abc123 Bu PHP sayfasında sadece kodudur:

sonra sayfasındaki çıkışını olsun! Bu davranış tam olarak $ _GET'in çalışmasını beklediğimden değil, ama kullanmıyorum.

Bu sorunu yalnızca PHP 5.2 çalıştıran belirli bir sunucuda yaşıyorum. Diğer 4 sunucuda test ettim, hiçbiri bu davranışa sahip değil. PHP yapılandırma sorunu olduğunu, ancak varsayılan yapılandırmayı çalıştırdığımı ve yapılandırma belgesinde bir şey bulamadığını varsayalım. Lütfen yardım et.

Şimdiden teşekkürler. Matt-

cevap

6

Bu, register globals. olarak adlandırılır. Bir sunucunun kayıt globals'ı açıksa, bunu yapabilirsiniz.

Herhangi bir sunucuda register globals olmamasını tavsiye ederim. Sisteminizde bir güvenlik hatası oluşturabileceğinden.

Bununla bir güvenlik kusuru örneği.

if($auth == true) 
{ 
    // sensitive stuff here 
} 

Eğer auth sadece normal bir değişkense, bunu URL'de yapabilirim.

http://www.example.com/page.php?auth=true

Ve hassas bilgilere bakın.

+0

Hızlı yanıt için teşekkürler. Asla register_globals kullanmadınız, bir daha asla istemeyiniz. Bu açığı açık bir delik. Teşekkürler beyler. –

İlgili konular