2009-09-03 11 views
258

Mögliche Duplizieren:
PHP detecting request type (GET, POST, PUT or DELETE)zu prüfen, ob eine Anforderung GET oder POST ist

Dies sollte leicht sein.

Ich habe ein Skript, und im Skript möchte ich feststellen, ob die Anfrage über GET oder POST Methode ankommen.

Was ist der richtige Weg?

Ich denke an so etwas wie dieses

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

Aber tief in meinem Herzen mit Ich habe nicht das Gefühl das der richtige Weg ist. Irgendeine Idee?

+0

Warum können Sie nicht versuchen, $ _REQUEST [ "variable_name"], wenn Sie Verarbeitungsvariablen Ziel unabhängig von Anforderungstyp? –

+3

@AnoopPete - weil das nicht gefragt wurde. $ _REQUEST akzeptiert GET, POST, PUT, DELETE (alles). Diese schreckliche Praxis kann nicht nur zu Sicherheitsrisiken führen. Stellen Sie sich vor, Ihre Logik erwartet lediglich eine Form-POST-Methode, aber Sie erlauben, dass alle/alle Methoden akzeptiert werden. Das könnte schlimme Folgen in den falschen Händen haben. – Marcus

+0

versuchen Sie es mit diesem wird es Ihnen helfen, Wetter Form erhalten oder Post if ($ _REQUEST ["Name"] || $ _REQUEST ["Alter"]) { Echo "Willkommen". $ _REQUEST ['Name']. "
"; echo "Du bist". $ _REQUEST ['Alter']. "Jahre alt."; Ausgang(); } – sarvesh

Antwort

639

Bessere Nutzung $_SERVER['REQUEST_METHOD']:

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

@Gumbo brauchen wir '===', was passiert, wenn ich '==' –

+3

verwenden Sie können '===' * oder * '==' verwenden. Ersteres ist nur eine gute Übung, da es prüft, ob die Variablen "identisch" sind. (ZB: '5 == '5'' ist' wahr ', aber' 5 ===' 5'' ist 'falsch') – Justin

+2

Überlegen Sie auch, ob Sie 405 zurückgeben, wenn es weder GET noch POST ist. if ($ _SERVER [ 'REQUEST_METHOD'] === 'POST') {// poste } elseif ($ _SERVER [ 'REQUEST_METHOD'] === 'GET') {// do bekommen} else { http_Antwort_code (405); sterben(); } –

Verwandte Themen