2009-09-03 14 views
258

Eventuali duplicati:
PHP detecting request type (GET, POST, PUT or DELETE)Controllare se una richiesta è GET o POST

Questo dovrebbe essere un compito facile.

Ho uno script e nello script voglio determinare se la richiesta arriva tramite il metodo GET o POST.

Qual è il modo corretto per farlo?

Sto pensando di usare qualcosa di simile

if (isset($_POST)) { 
    // do post 
} else { 
    // do get 
} 

Ma nel profondo del mio cuore non mi sento questo è il modo giusto. Qualche idea?

+0

Perchè non riesci a provare $ _REQUEST [ "nome_variabile"] se si target variabili di processo indipendentemente dal tipo di richiesta? –

+3

@AnoopPete - perché non è quello che è stato chiesto. $ _REQUEST accetterà GET, POST, PUT, DELETE (qualsiasi cosa). Non solo questa pratica terribile può portare a rischi per la sicurezza. Immagina che la tua logica si aspetti semplicemente un metodo POST, ma permetti l'accettazione di tutti/tutti i metodi. Ciò potrebbe avere conseguenze terribili nelle mani sbagliate. – Marcus

+0

prova a usare questo ti aiuterà a capire se il modulo wheather è ricevuto o pubblicato se ($ _REQUEST ["nome"] || $ _REQUEST ["età"]) { echo "Benvenuto". $ _REQUEST [ 'name']. "
"; echo "Sei". $ _REQUEST [ 'età']. " Anni."; exit(); } – sarvesh

risposta

639

Migliore utilizzo $_SERVER['REQUEST_METHOD']:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    // … 
} 
+0

@Gumbo abbiamo bisogno di '===', cosa succederà se usassi '==' –

+3

Puoi usare '===' * o * '=='. Il primo è solo una buona pratica, poiché controlla se le variabili sono "identiche". (EG: '5 == '5'' è' true', ma '5 ===' 5'' è' false') – Justin

+2

Considerate anche di restituire 405 se non è né GET né POST. if ($ _SERVER [ 'REQUEST_METHOD'] === 'post') {// non inviare } elseif ($ _SERVER [ 'REQUEST_METHOD'] === 'get') {// capisco } else { http_response_code (405); die(); } –

Problemi correlati