Ho visto persone (che generalmente scrivono un buon codice) alterare direttamente l' $_POSTarray 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.
Ha senso che update_record()non dovrebbe accedere direttamente a $ _POST, quindi possiamo passarci 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 ciò non dovrebbe essere fatto con i $_REQUESTdati, ed è una cattiva pratica. Ma perché? Sembra abbastanza innocuo.
Esempi:
Impostazione di un valore predefinito
$_GET(o post) che in realtà non esisteAggiunta di
$_POSTvalori che non sono stati effettivamente pubblicati dopo l'invio di un moduloDisinfettare o filtrare direttamente i
$_GETvalori dell'array o le chiavi molto presto nello script (risanamento di fallback ... perché no?)Impostazione
$_POSTmanuale di un valore prima dell'invio del modulo per popolare un input con un valore predefinito (quando l'input legge$_POSTil valore predefinito; l'ho fatto)Ti stai inventando i tuoi
$_SERVERvalori? Certo, ehi perché no?E gli altri, come
$_COOKIEe$_SESSION? Certo, dobbiamo modificarli direttamente, giusto? Allora perché non gli altri?
La modifica diretta dei superglobali non dovrebbe mai essere eseguita o è corretto farlo in alcuni casi?