Treci la conținutul principal

PHP $_REQUEST

Datele pot ajunge la un script PHP dintr-un formular trimis, din șirul de interogare al unui URL sau dintr-un cookie HTTP. $_REQUEST le adună pe toate într-un singur loc.

Altfel spus, această variabilă superglobală este un singur tablou construit din conținutul lui $_GET, $_POST și $_COOKIE.

Ca orice variabilă superglobală, este integrată și o poți folosi din orice domeniu de vizibilitate.

Pentru a citi o valoare, folosește numele câmpului de formular, al parametrului de interogare sau al cookie-ului drept cheie în $_REQUEST.

Notă: Amestecarea datelor GET, POST și COOKIE într-un singur tablou este comodă, dar folosirea neatentă poate deschide breșe de securitate. Când poți, preferă variantele mai specifice $_GET, $_POST sau $_COOKIE.


Folosirea $_REQUEST la o cerere POST

Să începem cu datele care sosesc într-o cerere POST și să le citim prin $_REQUEST.

O cerere POST vine de obicei dintr-un formular HTML.

Acel formular are nevoie de două lucruri: atributul method setat la post și câmpuri de intrare care au atribute name. Numele fiecărui câmp devine cheia pe care scriptul tău PHP o folosește pentru a găsi valoarea.

Poți vedea un astfel de formular în fragmentul Formular HTML de pe această pagină.

Când apeși butonul de trimitere, datele sunt trimise către fișierul PHP indicat de eticheta <form> în atributul action.

Acel fișier poate apoi să scoată valoarea scrisă din $_REQUEST, așa cum arată fragmentul Fișierul PHP.

Notă: Nu avea niciodată încredere în ce vine dintr-o variabilă superglobală precum $_REQUEST. Validează și curăță mai întâi datele, ca să nu lași ușa deschisă unor atacuri precum XSS. Apelarea funcției htmlspecialchars(), așa cum face codul de aici, este o variantă; funcțiile de filtrare din PHP îți oferă o filtrare mai puternică.

Exemplul care urmează păstrează formularul și codul lui PHP împreună, într-un singur fișier PHP:

Cerere POST cu $_REQUEST

Citește câmpul de intrare cu $_REQUEST după ce formularul a fost trimis:

Prompt
Scrie un script PHP cu un formular HTML care folosește method post și care se trimite către el însuși. Formularul are un câmp de text numit „fname”. La trimitere, folosește $_REQUEST pentru a obține valoarea, curăță-o cu htmlspecialchars() și afișează-o.
Ieșire: script PHP

Formular HTML

Un formular simplu a cărui metodă este setată la post:

index.php
<html>
<body>

<form method="post" action="demo_request.php">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

</body>
</html>

Fișierul PHP

Partea PHP, care citește valoarea trimisă din $_REQUEST:

index.php
<?php
$name = htmlspecialchars($_REQUEST['fname']);
echo $name;
?>

Folosirea $_REQUEST la o cerere GET

O cerere GET poate veni și dintr-un formular, atunci când atributul method al elementului <form> este get.

Poate veni și dintr-un șir de interogare, adică informații suplimentare adăugate la un URL.

Fragmentul Legătură HTML de pe această pagină conține un astfel de șir de interogare.

Când dai clic pe legătură, datele din șirul de interogare sunt transmise către demo_phpfile.php.

În acel fișier, valorile pot fi citite cu $_REQUEST și, de asemenea, cu $_GET, pe care îl folosește exemplul.

Cerere GET cu $_REQUEST

Fișierul PHP demo_phpfile.php:

Prompt
Scrie un script PHP care folosește $_GET pentru a colecta valorile „subject” și „web” din șirul de interogare al adresei URL și afișează cu echo un mesaj care folosește aceste valori.
Ieșire: script PHP

Legătură HTML cu șir de interogare

O legătură care transmite doi parametri în șirul său de interogare:

index.php
<html>
<body>

<a href="demo_phpfile.php?subject=PHP&web=PromptCookbook">Test $GET</a>

</body>
</html>