2009-10-08 9 views

Antwort

165
$_SERVER['REQUEST_METHOD'] 

Siehe the docs. Es enthält die Anfrage-Methode in Großbuchstaben (d. H. 'GET', 'HEAD', 'POST', 'PUT').

9

Während

Prüfung
$_SERVER['REQUEST_METHOD'] 

scheint die offensichtliche Wahl, da einige der Menschen sicher superglobals Alternativen befürworten sind (Is using superglobals directly good or bad in PHP? und ähnliche Fragen), kann man eigentlich

autosanitizing verwenden
filter_input(INPUT_SERVER, 'REQUEST_METHOD') 

(möglicherweise mit einige zusätzliche Filterschalter, zB FILTER_SANITIZE_SPECIAL_CHARS) statt.

Natürlich, in der regulären (GET/POST) Fall gibt es nichts zu sanieren, aber eine gute Gewohnheit ist immer noch eine gute Gewohnheit IMO.

http://php.net/manual/en/reserved.variables.server.php

http://php.net/manual/en/function.filter-input.php

+0

Wenn Sie wollen einfach nur wissen, ob es 'GET' oder' Post' oder so ist, wird keine Filterung erforderlich. Sie möchten jedoch die Methode testen und wenn nicht wie erwartet übereinstimmen, können Sie auf den Fehler "nicht verstandene HTTP-Methode" zurückgreifen (HTTP-Code 405). https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#405 –

+0

@AlexisWilke wie ich schon sagte, 'im regulären (GET/POST) Fall gibt es nichts zu sanieren'; OTOH, wenn das Ergebnis (der Wert der Variablen) z.B. (und aus welchem ​​Grund auch immer) weiter verwendet als z.B. Teil eines Ausgabe-Strings oder eines automatisch generierten Skript-Body und (wiederum aus welchem ​​Grund auch immer) wenn der Webserver abgehört wird [(und es gibt Fehler in Webservern]] (http://archive.apache.org/gnats/) und dazu neigen, eine ungültige Anfrage-Methode zu injizieren, könnte dies * möglicherweise * (obwohl es natürlich extrem unwahrscheinlich ist) [führen zu willkürlichen Code-Ausführung oder Datengenerierung] (https://xkcd.com/327/). – vaxquis

Verwandte Themen