Perché dovresti unire $ _GET e $ _POST in PHP?
-
07-07-2019 - |
Domanda
Ho appena visto questo codice mentre studiavo il codice sorgente di wordpress (PHP), puoi vedere che uniscono / trasformano tutti i valori get e post in 1 array di richieste.
Ora, per quanto ne so, $ _GET e $ _POST sono già disponibili chiamando $ _REQUEST SENZA utilizzando la funzione array_merge (), quindi qualche idea sul perché lo farebbero?
Ho appena visto questo codice mentre studiavo il codice sorgente di wordpress (PHP), puoi vedere che uniscono / trasformano tutti i valori get e post in 1 array di richieste.
Ora, per quanto ne so, $ _GET e $ _POST sono già disponibili chiamando $ _REQUEST SENZA utilizzando la funzione array_merge (), quindi qualche idea sul perché lo farebbero?
<*>REQUEST = array_merge( Ho appena visto questo codice mentre studiavo il codice sorgente di wordpress (PHP), puoi vedere che uniscono / trasformano tutti i valori get e post in 1 array di richieste.
Ora, per quanto ne so, $ _GET e $ _POST sono già disponibili chiamando $ _REQUEST SENZA utilizzando la funzione array_merge (), quindi qualche idea sul perché lo farebbero?
<*>GET, Ho appena visto questo codice mentre studiavo il codice sorgente di wordpress (PHP), puoi vedere che uniscono / trasformano tutti i valori get e post in 1 array di richieste.
Ora, per quanto ne so, $ _GET e $ _POST sono già disponibili chiamando $ _REQUEST SENZA utilizzando la funzione array_merge (), quindi qualche idea sul perché lo farebbero?
<*>POST);
Soluzione
Questo perché il $ _REQUEST
predefinito è una fusione di $ _GET
, $ _POST
E $ _COOKIE
. Inoltre, l'ordine in cui le variabili di questi superglobali vengono unite in $ _REQUEST
dipende dall'impostazione ini variabili_ordine
e da PHP 5.3.0 può anche essere influenzato da < code> request_order .
Quindi la mia ipotesi è che lo sviluppatore volesse assicurarsi che $ _REQUEST
sia composto solo da $ _GET
e $ _POST
, uniti in quell'ordine particolare, se non avesse accesso alle impostazioni INI (ad esempio su un host condiviso). Vedete, variabili_ordine
e request_order
non sono configurabili in base allo script.
HTH
Altri suggerimenti
$ _REQUEST
contiene i contenuti degli array $ _GET
, $ _POST
e $ _COOKIE
per impostazione predefinita. Forse vogliono escludere le variabili COOKIE da esso, dal momento che generalmente non viene utilizzato a tale scopo.
Questo è così se hai una variabile GET e una variabile POST con lo stesso nome, sceglierà la variabile POST su quella GET.
Inoltre potresti non voler i cookie nella variabile $ _REQUEST.
Non so esattamente perché sia ??stato fatto dove l'hai visto, ma l'ho già visto prima quando è stata eseguita un'elaborazione sui valori in un array o in un altro e vuoi unire nuovamente tali modifiche in $ _REQUEST in modo che chiunque usi $ _REQUEST riceverà le modifiche anche se sono state apportate alle variabili $ _POST o $ _GET.
Ciò si presenta in situazioni come Wordpress perché gli sviluppatori di plugin potrebbero utilizzare una di quelle variabili per accedere ai dati e il core di Wordpress dovrebbe assicurarsi che tutti ottengano gli stessi dati.
Perché non dovresti voler farlo direttamente a $ _REQUEST? Perché $ _REQUEST contiene un sacco di informazioni extra che $ _POST e $ _GET non hanno. Potresti non voler applicare l'elaborazione a tutti quei bit extra.