Flight kapselt die HTTP-Anfrage in ein einzelnes Objekt, das aufgerufen werden kann durch:
$request = Flight::request();
Wenn Sie mit einer Anfrage in einer Webanwendung arbeiten, möchten Sie in der Regel einen Header, oder ein $_GET oder $_POST Parameter extrahieren, oder vielleicht sogar den rohen Anfrageinhalt. Flight bietet eine einfache Schnittstelle, um all diese Dinge zu tun.
$_GET
$_POST
Hier ist ein Beispiel, wie man einen Abfragezeichenfolgenparameter erhält:
Flight::route('/search', function(){ $keyword = Flight::request()->query['keyword']; echo "Sie suchen nach: $keyword"; // Abfrage einer Datenbank oder etwas anderem mit dem $keyword });
Hier ist ein Beispiel für ein Formular mit einer POST-Methode:
Flight::route('POST /submit', function(){ $name = Flight::request()->data['name']; $email = Flight::request()->data['email']; echo "Sie haben eingereicht: $name, $email"; // in eine Datenbank oder etwas anderes mit $name und $email speichern });
Das Anfrageobjekt bietet die folgenden Eigenschaften:
$_SERVER
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED
HTTP_X_CLUSTER_CLIENT_IP
HTTP_FORWARDED_FOR
HTTP_FORWARDED
Sie können auf die Eigenschaften query, data, cookies und files als Arrays oder Objekte zugreifen.
query
data
cookies
files
Um einen Abfragezeichenfolgenparameter zu erhalten, können Sie tun:
$id = Flight::request()->query['id'];
Oder Sie können tun:
$id = Flight::request()->query->id;
Um den rohen HTTP-Anfrageinhalt zu erhalten, beispielsweise bei PUT-Anfragen, können Sie tun:
$body = Flight::request()->getBody();
Wenn Sie eine Anfrage mit dem Typ application/json und den Daten {"id": 123} senden, ist es über die data-Eigenschaft verfügbar:
application/json
{"id": 123}
$id = Flight::request()->data->id;
Sie können auf das $_GET-Array über die query-Eigenschaft zugreifen:
Sie können auf das $_POST-Array über die data-Eigenschaft zugreifen:
$id = Flight::request()->data['id'];
Sie können auf das $_COOKIE-Array über die cookies-Eigenschaft zugreifen:
$_COOKIE
$myCookieValue = Flight::request()->cookies['myCookieName'];
Es gibt eine Abkürzung, um auf das $_SERVER-Array über die getVar()-Methode zuzugreifen:
getVar()
$host = Flight::request()->getVar['HTTP_HOST'];
Sie können auf hochgeladene Dateien über die files-Eigenschaft zugreifen:
$uploadedFile = Flight::request()->files['myFile'];
Sie können Datei-Uploads mithilfe des Frameworks mit einigen Hilfsmethoden verarbeiten. Es reduziert sich im Grunde darauf, die Dateidaten aus der Anfrage zu extrahieren und sie an einen neuen Speicherort zu verschieben.
Flight::route('POST /upload', function(){ // Wenn Sie ein Eingabefeld wie <input type="file" name="myFile"> hatten $uploadedFileData = Flight::request()->getUploadedFiles(); $uploadedFile = $uploadedFileData['myFile']; $uploadedFile->moveTo('/path/to/uploads/' . $uploadedFile->getClientFilename()); });
Wenn Sie mehrere Dateien hochgeladen haben, können Sie sie durchlaufen:
Flight::route('POST /upload', function(){ // Wenn Sie ein Eingabefeld wie <input type="file" name="myFiles[]"> hatten $uploadedFiles = Flight::request()->getUploadedFiles()['myFiles']; foreach ($uploadedFiles as $uploadedFile) { $uploadedFile->moveTo('/path/to/uploads/' . $uploadedFile->getClientFilename()); } });
Sicherheitsnotiz: Validieren und sanitieren Sie immer die Benutzereingaben, insbesondere bei Datei-Uploads. Überprüfen Sie immer die Art der Dateierweiterungen, die Sie zulassen möchten, aber Sie sollten auch die "magischen Bytes" der Datei validieren, um sicherzustellen, dass es sich tatsächlich um den Dateityp handelt, den der Benutzer angibt. Es gibt Artikel und Bibliotheken, die Ihnen dabei helfen können.
Sie können auf Anfrage-Header mithilfe der getHeader()- oder getHeaders()-Methode zugreifen:
getHeader()
getHeaders()
// Vielleicht benötigen Sie den Authorization-Header $host = Flight::request()->getHeader('Authorization'); // oder $host = Flight::request()->header('Authorization'); // Wenn Sie alle Header abrufen müssen $headers = Flight::request()->getHeaders(); // oder $headers = Flight::request()->headers();
Sie können auf den rohen Anfrageinhalt über die getBody()-Methode zugreifen:
getBody()
Sie können auf die Anfrage-Methode über die method-Eigenschaft oder die getMethod()-Methode zugreifen:
method
getMethod()
$method = Flight::request()->method; // ruft tatsächlich getMethod() auf $method = Flight::request()->getMethod();
Hinweis: Die getMethod()-Methode ruft zuerst die Methode aus $_SERVER['REQUEST_METHOD'] ab, dann kann sie durch $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] überschrieben werden, wenn sie vorhanden ist, oder durch $_REQUEST['_method'], wenn sie vorhanden ist.
$_SERVER['REQUEST_METHOD']
$_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']
$_REQUEST['_method']
Es gibt eine Reihe von Hilfsmethoden, um Teile einer URL zu Ihrem Vorteil zusammenzufügen.
Sie können die vollständige Anforderungs-URL über die getFullUrl()-Methode abrufen:
getFullUrl()
$url = Flight::request()->getFullUrl(); // https://example.com/some/path?foo=bar
Sie können die Basis-URL über die getBaseUrl()-Methode abrufen:
getBaseUrl()
$url = Flight::request()->getBaseUrl(); // Hinweis, kein abschließender Schrägstrich. // https://example.com
Sie können eine URL an die parseQuery()-Methode übergeben, um die Abfragezeichenfolge in ein assoziatives Array zu analysieren:
parseQuery()
$query = Flight::request()->parseQuery('https://example.com/some/path?foo=bar'); // ['foo' => 'bar']