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
$_POST
che non sono stati effettivamente pubblicati dopo l'invio di un modulo -
Disinfettare o filtrare direttamente i valori dell'array
$_GET
o chiavi molto presto nello script (servizi igienici di riserva ... perché no?) -
Impostazione manuale di un valore
$_POST
prima dell'invio del modulo per popolare un input con un valore predefinito (quando l'input legge$_POST
per il valore predefinito; l'ho fatto) -
Crea i tuoi valori di
$_SERVER
? Certo, hey perché no? -
E gli altri, come
$_COOKIE
e$_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?