(Genellikle iyi kod yazma) doğrudan insanlar $_POST
böyle kod ile dizi değiştirmek gördüm :
// Add some value that wasn't actually posted
$_POST['last_activity'] = time();
// Alter an existing post value
$_POST['name'] = trim($_POST['name']);
// Our pretend function
// Pass the entire $_POST array as data to work with in the function
// The function update_record() will read only the values we actually need
update_record($_POST);
// ...That sure was easier than creating a new array
// with only the $_POST values we actually need.
update_record()
$ _POST'a doğrudan erişmemesi mantıklıdır , bu nedenle örneğin diğer veri dizilerini ona aktarabiliriz, ancak elbette bu tembel, kötü tasarım veya muhtemelen yanlış mı? Ancak, hala geçerli bir dizi geçiriyoruz update_record()
, neden yeni bir dizi oluşturmalıyız?
Bu sorunun konusu değil, sadece bir kullanım örneği. Ancak, birçok insanın bunun $_REQUEST
verilerle yapılmaması gerektiğini söylediğini duydum ve bu kötü bir uygulama. Ama neden? Yeterince zararsız görünüyor.
Örnekler:
$_GET
Gerçekten var olmayan bir varsayılan (veya posta) değeri ayarlama$_POST
Form gönderildikten sonra gerçekte gönderilmemiş değerler ekleme$_GET
Dizi değerlerini veya anahtarları komut dosyasında çok erken bir şekilde doğrudan sterilize etme veya filtreleme (yedek sanitasyon ... neden olmasın?)$_POST
Bir girişi varsayılan bir değerle doldurmak için form gönderilmeden önce manuel olarak bir değer ayarlama (girdi$_POST
varsayılan değeri için okuduğunda ; bunu yaptım)Kendi
$_SERVER
değerlerinizi mi oluşturuyorsunuz? Tabii, hey neden olmasın?Nasıl gibi başkaları hakkında
$_COOKIE
ve$_SESSION
? Elbette bunları doğrudan değiştirmek zorundayız değil mi? Öyleyse neden diğerleri değil?
Süper küresellerin doğrudan modifikasyonu asla yapılmamalı mı, yoksa bazı durumlarda yapılması uygun mudur?