Ho visto persone (che generalmente scrivono un buon codice) alterare direttamente l' $_POST
array 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 $_REQUEST
dati, ed è una cattiva pratica. Ma perché? Sembra abbastanza innocuo.
Esempi:
Impostazione di un valore predefinito
$_GET
(o post) che in realtà non esisteAggiunta di
$_POST
valori che non sono stati effettivamente pubblicati dopo l'invio di un moduloDisinfettare o filtrare direttamente i
$_GET
valori dell'array o le chiavi molto presto nello script (risanamento di fallback ... perché no?)Impostazione
$_POST
manuale di un valore prima dell'invio del modulo per popolare un input con un valore predefinito (quando l'input legge$_POST
il valore predefinito; l'ho fatto)Ti stai inventando i tuoi
$_SERVER
valori? Certo, ehi perché no?E gli altri, come
$_COOKIE
e$_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?