Wie kann ich feststellen, welcher Anforderungstyp (GET, POST, PUT oder DELETE) in PHP verwendet wurde?
Antworten
Zu viele Anzeigen?Durch die Verwendung von
$_SERVER['REQUEST_METHOD']
Beispiel
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// The request is using the POST method
}
Weitere Einzelheiten finden Sie in der Dokumentation für die Variable $_SERVER .
REST in PHP kann ziemlich einfach durchgeführt werden. erstellen http://example.com/test.php (siehe unten). Verwenden Sie dies für REST-Aufrufe, z. B. http://example.com/test.php/testing/123/hello . Dies funktioniert mit Apache und Lighttpd sofort, und es werden keine Rewrite-Regeln benötigt.
<?php
$method = $_SERVER['REQUEST_METHOD'];
$request = explode("/", substr(@$_SERVER['PATH_INFO'], 1));
switch ($method) {
case 'PUT':
do_something_with_put($request);
break;
case 'POST':
do_something_with_post($request);
break;
case 'GET':
do_something_with_get($request);
break;
default:
handle_error($request);
break;
}
Die Erkennung der HTTP-Methode oder der so genannten REQUEST METHOD
kann mit dem folgenden Codeschnipsel durchgeführt werden.
$method = $_SERVER['REQUEST_METHOD'];
if ($method == 'POST'){
// Method is POST
} elseif ($method == 'GET'){
// Method is GET
} elseif ($method == 'PUT'){
// Method is PUT
} elseif ($method == 'DELETE'){
// Method is DELETE
} else {
// Method unknown
}
Sie könnten auch eine switch
wenn Sie dies gegenüber der if-else
Erklärung.
Wenn eine andere Methode als GET
o POST
in einem HTML-Formular erforderlich ist, wird dies häufig durch ein verstecktes Feld im Formular gelöst.
<!-- DELETE method -->
<form action='' method='POST'>
<input type="hidden" name'_METHOD' value="DELETE">
</form>
<!-- PUT method -->
<form action='' method='POST'>
<input type="hidden" name'_METHOD' value="PUT">
</form>
Für weitere Informationen zu HTTP-Methoden möchte ich auf die folgende StackOverflow-Frage verweisen:
PUT und DELETE des HTTP-Protokolls und ihre Verwendung in PHP
Wir können auch die eingabe_filter um die Anfragemethode zu erkennen und gleichzeitig die Sicherheit durch Eingabesanierung zu gewährleisten.
$request = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_ENCODED);
- See previous answers
- Weitere Antworten anzeigen