Saya telah melihat orang (yang umumnya menulis kode yang baik) langsung mengubah $_POST
array dengan kode seperti ini:
// 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.
Masuk akal bahwa update_record()
seharusnya tidak mengakses $ _POST secara langsung, jadi kita dapat mengirimkan array data lain misalnya, tetapi tentu ini malas, desain yang buruk, atau mungkin hanya salah? Namun, kami masih meneruskan array yang valid update_record()
, jadi mengapa membuat yang baru?
Ini bukan inti dari pertanyaan, hanya sebuah contoh penggunaan. Namun, saya telah mendengar banyak orang mengatakan bahwa ini tidak boleh dilakukan dengan $_REQUEST
data, dan itu praktik yang buruk. Tapi kenapa? Terlihat tidak berbahaya.
Contoh:
Menetapkan nilai default
$_GET
(atau posting) yang tidak benar-benar adaMenambahkan
$_POST
nilai yang tidak benar-benar diposting setelah pengiriman formulirSanitasi langsung atau memfilter nilai
$_GET
array atau kunci sangat awal dalam skrip (sanitasi fallback ... mengapa tidak?)Menetapkan
$_POST
nilai secara manual sebelum pengiriman formulir untuk mengisi input dengan nilai default (ketika input membaca$_POST
untuk nilai standarnya; Saya telah melakukan ini)Membuat
$_SERVER
nilai - nilai Anda sendiri ? Tentu, hei kenapa tidak?Bagaimana dengan yang lain, suka
$_COOKIE
dan tidak$_SESSION
? Tentu saja kita harus memodifikasinya secara langsung bukan? Lalu mengapa tidak yang lain?
Haruskah modifikasi superglobals langsung tidak pernah dilakukan, atau apakah boleh dilakukan dalam beberapa kasus?