Ho visto persone (che generalmente scrivono un buon codice) modificare direttamente l'array $_POST con un codice come questo:
// 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.
È logico che update_record() non debba accedere direttamente a $ _POST, quindi possiamo passare ad altri array di dati, ad esempio, ma sicuramente questo è un design pigro, cattivo o forse solo sbagliato? Tuttavia, stiamo ancora passando un array valido a update_record() , quindi perché crearne uno nuovo?
Questo non è il punto della domanda, solo un esempio di utilizzo. Tuttavia, ho sentito molte persone dire che questo non dovrebbe essere fatto con $_REQUEST di dati, ed è una cattiva pratica. Ma perché? Sembra abbastanza innocuo.
Esempi:
-
Impostazione di un valore predefinito
$_GET(o post) che in realtà non esiste -
Aggiunta di valori di
$_POSTche non sono stati effettivamente pubblicati dopo l'invio di un modulo -
Disinfettare o filtrare direttamente i valori dell'array
$_GETo chiavi molto presto nello script (servizi igienici di riserva ... perché no?) -
Impostazione manuale di un valore
$_POSTprima dell'invio del modulo per popolare un input con un valore predefinito (quando l'input legge$_POSTper il valore predefinito; l'ho fatto) -
Crea i tuoi valori di
$_SERVER? Certo, hey perché no? -
E gli altri, come
$_COOKIEe$_SESSION? Ovviamente dobbiamo modificare quelli direttamente giusto? Allora perché non gli altri?
Dovrebbe modificare direttamente superglobali mai essere fatto, o è OK fare in alcune istanze?