Ce face request_parse_body
PHP completează automat $_POST și $_FILES doar pentru cererile POST. Un API REST primește însă și cereri PUT sau PATCH cu formulare. request_parse_body interpretează corpul acestor cereri (application/x-www-form-urlencoded sau multipart/form-data) și returnează două tablouri: câmpurile și fișierele.
Corpul cererii poate fi citit o singură dată. Pentru JSON nu ai nevoie de această funcție: folosești json_decode(file_get_contents("php://input"), true).
Parametri
| Parametru | Descriere |
|---|---|
$options |
Opțional. Limite care înlocuiesc setările din php.ini, de exemplu ["post_max_size" => "10M"]. |
Ce returnează
Un tablou cu două elemente: [$campuri, $fisiere]. Aruncă RequestParseBodyException la eroare.
Exemple
Exemplul 1: Actualizarea unui produs cu PUT
<?php
if ($_SERVER["REQUEST_METHOD"] === "PUT") {
[$campuri, $fisiere] = request_parse_body();
echo "Produs actualizat: " . $campuri["nume"] . ", " . $campuri["pret"] . " lei";
}
Rezultat pe server, pentru o cerere PUT cu nume=Husă telefon&pret=45
Produs actualizat: Husă telefon, 45 lei
Exemplul 2: Fără cerere HTTP
Din linia de comandă nu există o cerere de citit, așa că funcția aruncă o excepție.
<?php
try {
request_parse_body();
} catch (RequestParseBodyException $e) {
echo get_class($e) . ": " . $e->getMessage();
}
Rezultat
RequestParseBodyException: Request does not provide a content type
Greșeli frecvente
- Folosești funcția pentru un corp JSON. Ea înțelege doar formulare. Pentru JSON citește
php://inputși decodează cujson_decode.
Comenzi înrudite
json_decode: Transformă un text JSON în tablou sau obiect PHP.file_get_contents: Citește tot conținutul unui fișier (sau al unei adrese URL) într-un text.move_uploaded_file / is_uploaded_file: Mută un fișier încărcat printr-un formular în locul lui definitiv de pe server.