Vi behandler POST-forespørsler i PHP. NodeJS. Hvordan behandle POST-forespørsler Behandle http-forespørsler php

Nettleserklienter kan sende informasjon til webserveren.

Før nettleseren sender informasjon, koder den den ved hjelp av et skjema kalt URL-koding. I denne ordningen er navn/verdi-par sammenkoblet med likhetstegn, og forskjellige par er atskilt med et og-tegn.

Navn1=verdi1&navn2=verdi2&navn3=verdi3

Mellomrom fjernes og erstattes med et +-tegn, og alle andre ikke-alfanumeriske tegn erstattes med heksadesimale verdier. Når informasjonen er kodet, sendes den til serveren.

GET metoden

GET-metoden sender kodet brukerinformasjon som er lagt til sideforespørselen. Er sidene og den kodede informasjonen atskilt fra hverandre? spørsmålstegn.

http://www.test.com/index.htm?name1=value1&name2=value2

  • GET-metoden produserer en lang streng som vises i serverloggene dine i nettleserens "Location"-felt.
  • GET-metoden er begrenset til kun å sende opptil 1024 tegn.
  • Bruk aldri GET-metoden hvis du har et passord eller annen sensitiv informasjon å sende til serveren.
  • GET kan ikke brukes til å overføre binære data, som bilder eller tekstdokumenter, til serveren.
  • Data sendt med GET-metoden kan nås ved hjelp av miljøvariabelen QUERY_STRING.
  • PHP gir den assosiative matrisen $_GET for å få tilgang til all sendt informasjon ved hjelp av GET-metoden.

if($_GET["navn"] || $_GET["alder"]) ( ekko "Velkommen ". $_GET["navn"]; ekko "Du er ". $_GET["alder"]. " år gammel "; exit(); )

Navn: Alder:

POST metode

Metode POST overfører informasjon via HTTP-hoder. Informasjonen er kodet som beskrevet i tilfellet med metoden , og plassert i overskriften QUERY_STRING.

  • POST-metoden har ingen begrensning på størrelsen på dataene som må sendes.
  • POST-metoden kan brukes til å sende ASCII så vel som binære data.
  • Data som sendes med POST-metoden går gjennom en HTTP-header, så sikkerheten avhenger av HTTP-protokollen. Ved å bruke Secure HTTP kan du sikre at informasjonen din er beskyttet.
  • PHP gir en assosiativ matrise $_POST for å få tilgang til all informasjon som sendes med POST-metoden.

Prøv følgende eksempel ved å plassere kildekoden i test.php-skriptet.

if($_POST["navn"] || $_POST["alder"]) ( if (preg_match("[^A-Za-z"-]",$_POST["navn"])) ( die (" ugyldig navn og navn skal være alfa"); ) echo "Velkommen ". $_POST["navn"]; echo "Du er ". $_POST["alder"]. " år gammel."; exit(); )

Navn: Alder:

$_REQUEST variabel

PHP-variabel $_REQUEST inneholder innhold som $_GET, $_POST, så $_COOKIE. Vi vil diskutere variabelen $_COOKIE når vi snakker om informasjonskapsler.

PHP $_REQUEST-variabelen kan brukes til å hente resultatet fra skjemadata som sendes inn ved hjelp av GET- og POST-metodene.

Den første metoden for å utføre en PHP POST-forespørsel er å bruke file_get_contents . Den andre metoden vil bruke fread i kombinasjon med et par andre funksjoner. Begge alternativene bruker stream_context_create-funksjonen for å fylle ut de nødvendige forespørselshodefeltene.

Kodeforklaring

$sPD-variabelen inneholder dataene som skal overføres. Den må være i HTTP-forespørselsstrengformat, så noen spesialtegn må kodes.

I både file_get_contents-funksjonen og fread-funksjonen har vi to nye parametere. Den første er use_include_path . Siden vi lager en HTTP-forespørsel, vil den være usann i begge eksemplene. Når satt til sann for å lese en lokal ressurs, vil funksjonen se etter filen på include_path .

Den andre parameteren er kontekst, som er fylt ut med returverdien til stream_context_create, som tar verdien til $aHTTP-matrisen.

Bruker file_get_contents til å lage POST-forespørsler

For å sende en POST-forespørsel ved å bruke file_get_contents i PHP, må du bruke stream_context_create for å manuelt fylle ut overskriftsfeltene og spesifisere hvilken "wrapper" som skal brukes - i dette tilfellet HTTP:

$sURL = "http://brugbart.com/Examples/http-post.php"; // POST URL $sPD = "navn=Jacob&bench=150"; // POST-data $aHTTP = array("http" => // Wrapper som vil bli brukt array("method" => "POST", // Request method // Request header er satt under "header" => "Innhold - type: application/x-www-form-urlencoded", "content" => $sPD)); $context = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $context); ekko $innhold;

Bruker fread til å lage POST-forespørsler

Du kan bruke fread-funksjonen til å lage POST-forespørsler. Følgende eksempel bruker stream_context_create til å komponere de nødvendige HTTP-forespørselshodene:

$sURL = "http://brugbart.com/Examples/http-post.php"; // POST URL $sPD = "navn=Jacob&bench=150"; // POST-data $aHTTP = array("http" => // Wrapper som vil bli brukt array("method" => "POST", // Forespørselsmetode // Forespørselshoder er satt under "header" => "Innhold - type: application/x-www-form-urlencoded", "content" => $sPD)); $context = stream_context_create($aHTTP); $handle = fopen($sURL, "r", falsk, $kontekst); $contents = ""; while (!feof($handle)) ( $contents .= fread($handle, 8192); ) fclose($handle); ekko $innhold;

Gjør GET-forespørsler med PHP

Vi vil nå fokusere på å bruke fread og file_get_contents for å laste ned innhold fra internett via HTTP og HTTPS. For å bruke metodene som er beskrevet i denne artikkelen, må du aktivere alternativet fopen wrappers. For å gjøre dette må du sette parameteren allow_url_fopen til On i php.ini-filen.

Å utføre POST- og GET-forespørsler i PHP brukes til å logge på nettsteder, hente innhold på nettsider eller se etter nye versjoner av applikasjoner. Vi vil dekke hvordan du lager enkle HTTP-forespørsler.

Bruke fread til å laste ned eller motta filer over Internett

Husk at lesing av nettsider er begrenset til den tilgjengelige delen av pakken. Så du må bruke funksjonen stream_get_contents ( ligner på file_get_contents) eller en while-løkke for å lese innholdet i mindre biter til slutten av filen er nådd:

I dette tilfellet med å behandle en PHP POST-forespørsel, er det siste argumentet til fread-funksjonen lik fragmentstørrelsen. Det bør vanligvis ikke være større enn 8192 ( 8*1024 ).

Husk at den kan være større eller mindre, og kan også være begrenset av innstillingene til systemet som PHP kjører på.

Bruke file_get_contents for å få et nettsteds URL

Det er enda enklere å bruke denne metoden når du leser en fil over HTTP, siden du ikke trenger å bekymre deg for å lese i biter – alt håndteres i PHP.

Denne publikasjonen er en oversettelse av artikkelen "Making POST Requests With PHP", utarbeidet av det vennlige prosjektteamet

PHP er for tiden et av de mest populære språkene for implementering av webapplikasjoner. Dette kurset er viet til å studere det grunnleggende. Det legges vekt på praktisk anvendelse av ervervede ferdigheter.

PHP-språket ble laget for å løse et spesifikt praktisk problem på Internett (som man kan finne ut av ved å lese kursets første forelesning). Vi vil også prøve å ikke la oss distrahere for mye av teoretiske resonnementer, og vil strebe etter å løse et spesifikt problem i hver av forelesningene. De fleste eksemplene er hentet fra et virkelig system: et virtuelt museum for datavitenskapens historie. Den første delen av kurset er viet til å studere det grunnleggende om syntaks og kontrollstrukturer. Etter dette betraktes klient-server-teknologi som hovedapplikasjonsområdet for PHP-språket. Deretter går vi videre til å studere de mest nyttige innebygde funksjonene etter vår mening og løse praktiske problemer med deres hjelp. Selv om objektmodellen i PHP-språket ikke er den rikeste, lar dens grunnleggende tilstedeværelse deg naturlig beskrive objektdatamodeller. Som en grunnleggende modell vil dokumentmodellen til et virtuelt datavitenskapsmuseum bli vurdert. Etter dette vil en rekke anvendte aspekter bli vurdert: arbeid med filsystemet, med databasen, strenger, økter, DOM XML - alt dette vil tillate oss å vurdere nøkkeloppgavene for praktisk bruk av språket.

Som det fremgår av tabellen ovenfor, inntar Apache-serveren en ledende posisjon. Alt vi noen gang vil si om webservere er Apache-sentrisk med mindre annet er angitt. Vi snakket allerede om hvordan du installerer det på datamaskinen din i den aller første forelesningen. Og nå, som lovet, la oss gå til HTTP-protokollen.

HTTP-protokoll og metoder for overføring av data til serveren

Internett er bygget på et flerlagsprinsipp, fra det fysiske laget, som omhandler de fysiske aspektene ved overføring av binær informasjon, til applikasjonslaget, som gir grensesnittet mellom brukeren og nettverket.

HTTP (HyperText Transfer Protocol) er en applikasjonslagsprotokoll utviklet for å utveksle hypertekstinformasjon på Internett.

HTTP gir et sett med metoder for å spesifisere formålet med forespørselen som sendes til serveren. Disse metodene er basert på referansedisiplin, der en Universal Resource Identifier, enten som en Universal Resource Locator (URL) eller et Universal Resource Name, brukes for å indikere ressursen som metoden skal brukes på. ,URN).

Meldinger over nettverket ved bruk av HTTP-protokollen overføres i et format som ligner på meldingsformatet for Internett-e-post (RFC-822) eller meldingsformatet MIME (Multipurpose Internet Mail Exchange).

HTTP brukes til kommunikasjon mellom ulike brukerprogrammer og gateway-programmer som gir tilgang til eksisterende Internett-protokoller som SMTP (Email Protocol), NNTP (News Transfer Protocol), FTP (File Transfer Protocol), Gopher og WAIS. HTTP er designet for å tillate slike gatewayer å overføre data gjennom proxy-servere uten tap.

Protokollen implementerer forespørsel/svar-prinsippet. Det anmodende programmet - klienten starter interaksjon med det svarende programmet - serveren og sender en forespørsel som inneholder:

Tilgangsmetode;

URI-adresse;

Protokoll versjon;

En melding (liknende i form på MIME) som inneholder informasjon om typen data som overføres, informasjon om klienten som sender forespørselen, og muligens innholdet (brødteksten) i meldingen.

Serversvaret inneholder:

En statuslinje som inkluderer protokollversjonen og returkoden (suksess eller feil);

En melding (i MIME-lignende form) som inkluderer serverinformasjon, metainformasjon (det vil si informasjon om innholdet i meldingen) og meldingsteksten.

Protokollen spesifiserer ikke hvem som skal åpne og lukke forbindelsen mellom klient og server. I praksis åpnes tilkoblingen vanligvis av klienten, og serveren, etter å ha sendt svaret, starter oppsigelsen.

La oss se nærmere på skjemaet der forespørsler sendes til serveren.

Kundeforespørselsskjema

Klienten sender forespørselen til serveren i en av to former: full eller forkortet. En forespørsel i det første skjemaet kalles en fullstendig forespørsel, og i det andre skjemaet en enkel forespørsel.

En enkel forespørsel inneholder en tilgangsmetode og en ressursadresse. Formelt sett kan dette skrives slik:

<Простой-Запрос> := <Метод> <символ пробел>
<Запрашиваемый-URI> <символ новой строки>

Metoden kan være GET, POST, HEAD, PUT, DELETE og andre. Vi vil snakke om de vanligste av dem litt senere. Den forespurte URIen er oftest URL-en til ressursen.

Eksempel på en enkel forespørsel:

FÅ http://phpbook.info/

Her er GET tilgangsmetoden, dvs. en metode som skal brukes på den forespurte ressursen, og http://phpbook.info/ er URL-en til den forespurte ressursen.

En fullstendig forespørsel inneholder en statuslinje, flere overskrifter (forespørselshode, generell overskrift eller innholdsoverskrift), og muligens en forespørselstekst. Formelt kan den generelle formen for en fullstendig forespørsel skrives som følger:

<Полный запрос> := <Строка Состояния>
(<Общий заголовок>|<Заголовок запроса>|
<Заголовок содержания>)
<символ новой строки>
[<содержание запроса>]

Firkantede parenteser her indikerer valgfrie topptekstelementer, og alternative alternativer er oppført gjennom en vertikal strek. Element<Строка состояния>inneholder forespørselsmetoden og ressurs-URI (akkurat som en enkel forespørsel) og i tillegg versjonen av HTTP-protokollen som brukes. For å ringe et eksternt program kan du for eksempel bruke følgende statuslinje:

POST http://phpbook.info/cgi-bin/test HTTP/1.0

I dette tilfellet brukes POST-metoden og HTTP-versjon 1.0.

I begge forespørselsformene spiller URIen til den forespurte ressursen en viktig rolle. Den vanligste URI-en brukes i form av en ressurs-URL. Når du får tilgang til serveren, kan du bruke både den fullstendige formen til URL-en og den forenklede.

Det fullstendige skjemaet inneholder typen tilgangsprotokoll, adressen til ressursserveren og adressen til ressursen på serveren (Figur 4.2).

I den forkortede formen er protokollen og serveradressen utelatt, og indikerer bare plasseringen av ressursen fra serverroten. Fullstendig skjema brukes dersom det er mulig å videresende forespørselen til en annen server. Hvis arbeid skjer med bare én server, brukes ofte den forkortede formen.


Ris. 4.2. Fullstendig URL-skjema

Metoder

Som allerede nevnt, må enhver klientforespørsel til serveren begynne med en metodespesifikasjon. Metoden kommuniserer formålet med klientens forespørsel. HTTP-protokollen støtter ganske mange metoder, men bare tre brukes faktisk: POST, GET og HEAD. GET-metoden lar deg hente alle data identifisert av URIen i ressursforespørselen. Hvis URI-en peker på et program, returneres resultatet av programmets operasjon, ikke teksten (med mindre, selvfølgelig, teksten er resultatet av operasjonen). Ytterligere informasjon som er nødvendig for å behandle forespørselen er innebygd i selve forespørselen (i statuslinjen). Når du bruker GET-metoden, returneres den faktiske forespurte informasjonen (teksten til et HTML-dokument, for eksempel) i ressurstekstfeltet.

Det finnes en variant av GET-metoden – betinget GET. Denne metoden forteller serveren at forespørselen bare skal besvares hvis betingelsen i feltet if-Modified-Since i forespørselshodet er sann. Mer spesifikt sendes ressursorganet som svar på forespørselen hvis ressursen har blitt endret siden datoen spesifisert i if-Modified-Since.

HEAD-metoden ligner på GET-metoden, men returnerer ikke ressurskroppen og har ikke en betinget motpart. HEAD-metoden brukes for å få informasjon om en ressurs. Dette kan være nyttig for eksempel når du skal løse problemet med å teste hypertekstlenker.

POST-metoden er designet for å overføre informasjon til serveren som ressurskommentarer, nyheter og e-postmeldinger, data som skal legges til databasen, dvs. for overføring av stort volum og ganske viktig informasjon. I motsetning til GET- og HEAD-metodene, overfører POST ressurskroppen, som er informasjon mottatt fra skjemafelt eller andre inndatakilder.

Til nå har vi kun teoretisert og satt oss inn i de grunnleggende begrepene. Nå er det på tide å lære å bruke alt dette i praksis. Senere i forelesningen vil vi se på hvordan man sender forespørsler til serveren og hvordan man behandler svarene.

Bruke HTML-skjemaer for å sende data til serveren

Hvordan overføre data til serveren? For dette formålet har HTML-språket en spesiell konstruksjon - former. Skjemaer er laget for å motta informasjon fra brukeren. Du må for eksempel kjenne brukerens innlogging og passord for å finne ut hvilke sider på nettstedet han kan få tilgang til. Eller du trenger brukerens personlige data for å kunne kontakte ham. Skjemaer brukes nettopp for å legge inn slik informasjon. Du kan skrive inn tekst i dem eller velge passende alternativer fra en liste. Dataene skrevet i skjemaet sendes for behandling til et spesielt program (for eksempel et PHP-skript) på serveren. Avhengig av dataene som er lagt inn av brukeren, kan dette programmet generere forskjellige nettsider, sende forespørsler til databasen, starte forskjellige applikasjoner, etc.

La oss forstå syntaksen til HTML-skjemaer. Mange er kanskje kjent med det, men vi vil likevel gjenta hovedpunktene fordi det er viktig.

Så for å lage et skjema i HTML, brukes FORM-taggen. Inne i den er en eller flere INPUT-kommandoer. Ved å bruke handlings- og metodeattributtene til FORM-taggen spesifiserer du navnet på programmet som skal behandle henholdsvis skjemadataene og forespørselsmetoden. INPUT-kommandoen spesifiserer typen og de ulike egenskapene til den forespurte informasjonen. Skjemadataene sendes etter å ha trykket på inntastingsknappen for innsendingstypen. La oss lage et skjema for registrering av deltakere på en korrespondanseskole for programmering.

Når den er behandlet av nettleseren, vil denne filen se omtrent slik ut:


Ris. 4.3. Eksempel html-skjema

Slik lages og ser HTML-skjemaer ut. Vi vil anta at vi har lært eller husket hvordan vi lager dem. Som vi kan se, kan du spesifisere dataoverføringsmetoden i skjemaet. La oss se hva som skjer hvis du spesifiserer GET- eller POST-metoden, og hva forskjellen vil være.

For GET-metoden

Når du sender inn skjemadata ved hjelp av GET-metoden, legges skjemainnholdet til URL-en etter spørsmålstegnet som navn=verdi-par sammen med et og-tegnet &:

handling?navn1=verdi1&navn2=verdi2&navn3=verdi3

Her er handling URL-en til programmet som skal behandle skjemaet (enten programmet spesifisert i form-taggens handlingsattributt, eller selve programmet hvis det attributtet er utelatt). Navnene navn1, navn2, navn3 tilsvarer navnene på formelementene, og verdi1, verdi2, verdi3 tilsvarer verdiene til disse elementene. Alle spesialtegn, inkludert = og &, vil bli utelatt fra disse parameternavnene eller -verdiene. Derfor bør du ikke bruke disse symbolene og kyrilliske tegn i identifikatorer i navnene eller verdiene til skjemaelementer.

Hvis du skriver inn et tjenestetegn i inntastingsfeltet, vil det bli overført i sin heksadesimale kode, for eksempel vil $-symbolet bli erstattet med %24. Russiske bokstaver overføres også på samme måte.

For tekst- og passordinntastingsfelt (disse er inndataelementer med type=text og type=password-attributtene), vil verdien være hva brukeren skriver inn. Hvis brukeren ikke skriver inn noe i et slikt felt, vil name=-elementet være tilstede i spørringsstrengen, der navn tilsvarer navnet på dette skjemaelementet.

For avmerkingsboks- og alternativknappknapper bestemmes verdien av VALUE-attributtet når knappen er merket av. Ukontrollerte knapper ignoreres fullstendig når du komponerer søkestrengen. Flere avmerkingsboksknapper kan ha samme NAME-attributt (og forskjellige VERDIER) om nødvendig. Knapper av typen alternativknapp er ment for ett av alle tilbudte alternativer og må derfor ha samme NAME-attributt og forskjellige VALUE-attributter.

I prinsippet er det ikke nødvendig å lage et HTML-skjema for å overføre data ved hjelp av GET-metoden. Du kan ganske enkelt legge til de ønskede variablene og deres verdier i URL-strengen.

http://phpbook.info/test.php?id=10&user=pit

I denne forbindelse har dataoverføring ved hjelp av GET-metoden en betydelig ulempe - hvem som helst kan forfalske parameterverdier. Derfor anbefaler vi ikke å bruke denne metoden for å få tilgang til passordbeskyttede sider eller for å overføre informasjon som påvirker sikkerheten til programmet eller serveren. I tillegg bør du ikke bruke GET-metoden for å overføre informasjon som brukeren ikke har lov til å endre.

Til tross for alle disse ulempene, er det ganske praktisk å bruke GET-metoden når du feilsøker skript (da kan du se verdiene og navnene på variablene som sendes) og for å sende parametere som ikke påvirker sikkerheten.

For POST-metoden

Skjemainnholdet er kodet på nøyaktig samme måte som for GET-metoden (se ovenfor), men i stedet for å legge til en streng i URL-en, sendes forespørselsinnholdet som en datablokk som en del av POST-operasjonen. Hvis ACTION-attributtet er til stede, bestemmer URL-verdien som finnes der hvor denne datablokken skal sendes. Denne metoden, som allerede nevnt, anbefales for overføring av store datablokker.

Informasjon som legges inn av brukeren og sendes til serveren ved bruk av POST-metoden, serveres på standard input til programmet spesifisert av handlingsattributtet, eller til gjeldende skript hvis dette attributtet er utelatt. Lengden på den sendte filen sendes i miljøvariabelen CONTENT_LENGTH, og datatypen sendes i CONTENT_TYPE-variabelen.

Du kan bare sende data ved å bruke POST-metoden ved å bruke et HTML-skjema, siden dataene sendes i forespørselens brødtekst, og ikke i overskriften, som i GET. Følgelig kan du endre verdien på parameterne bare ved å endre verdien som er angitt i skjemaet. Ved bruk av POST ser ikke brukeren dataene som sendes til serveren.

Den største fordelen med POST-forespørsler er deres større sikkerhet og funksjonalitet sammenlignet med GET-forespørsler. Derfor brukes POST-metoden oftere til å overføre viktig informasjon, så vel som storskala informasjon. Du bør imidlertid ikke stole helt på sikkerheten til denne mekanismen, siden POST-forespørselsdataene også kan forfalskes, for eksempel ved å lage en HTML-fil på maskinen din og fylle den med de nødvendige dataene. I tillegg kan ikke alle klienter bruke POST-metoden, som begrenser brukstilfellene.

Når du sender data til serveren på en hvilken som helst måte, overføres ikke bare dataene som er lagt inn av brukeren, men også en rekke variabler, kalt miljøvariabler, som karakteriserer klienten, dens operasjonshistorikk, filstier, etc. Her er noen av miljøvariablene:

REMOTE_ADDR – IP-adressen til verten (datamaskinen) som sender forespørselen;

REMOTE_HOST – vertsnavnet som forespørselen ble sendt fra;

HTTP_REFERER – adressen til siden som lenker til gjeldende skript;

REQUEST_METHOD – metoden som ble brukt da forespørselen ble sendt;

QUERY_STRING – informasjon plassert i URL-en etter spørsmålstegnet;

SCRIPT_NAME – virtuell bane til programmet som skal kjøres;

HTTP_USER_AGENT – informasjon om nettleseren som klienten bruker

Så langt har vi bare nevnt at klientforespørsler behandles på serveren ved hjelp av et spesielt program. Faktisk kan vi skrive dette programmet selv, inkludert i PHP, og det vil gjøre hva vi vil med de mottatte dataene. For å skrive dette programmet, må du bli kjent med noen av reglene og verktøyene som PHP tilbyr for dette formålet.

Innenfor et PHP-skript er det flere måter å få tilgang til data sendt av en klient via HTTP. Før PHP 4.1.0 ble tilgang til slike data utført av navnene på de overførte variablene (husk at data overføres i form av parene "variabelnavn, "=" symbol, variabelverdi"). Således, hvis for eksempel first_name=Nina ble bestått, dukket $first_name-variabelen med verdien Nina opp inne i skriptet. Hvis det var nødvendig å skille med hvilken metode dataene ble overført, ble de assosiative matrisene $HTTP_POST_VARS og $HTTP_GET_VARS brukt, hvis nøkler var navnene på de overførte variablene, og verdiene var henholdsvis verdiene ​av disse variablene. Således, hvis paret first_name=Nina blir sendt av GET-metoden, så $HTTP_GET_VARS["first_name"]="Nina".

Det er ikke trygt å bruke navn på beståtte variabler direkte i et program. Derfor ble det besluttet, med utgangspunkt i PHP 4.1.0, å bruke en spesiell matrise – $_REQUEST – for å få tilgang til variabler som overføres via HTTP-forespørsler. Denne matrisen inneholder data som er overført ved hjelp av POST- og GET-metodene, samt ved hjelp av HTTP-informasjonskapsler. Dette er en superglobal assosiativ matrise, dvs. verdiene kan oppnås hvor som helst i programmet ved å bruke navnet på den tilsvarende variabelen (skjemaelementet) som en nøkkel.

Eksempel 4.2. La oss si at vi laget et skjema for å registrere deltakere til ene, som i eksemplet ovenfor. Så i 1.php-filen som behandler dette skjemaet, kan du skrive følgende:

$str = "Hei,
".$_REQUEST["fornavn"]. "
".$_REQUEST["etternavn"]."!
";
$str .="Du har valgt å studere et emne i
".$_REQUEST["kurs"];
ekko $str;
?>

Så, hvis vi skrev inn navnet "Vasya", etternavnet "Petrov" i skjemaet og valgte PHP-kurset blant alle kurs, vil vi motta følgende melding på nettleserskjermen:

Hei, Vasya Petrov!

Etter introduksjonen av $_REQUEST-matrisen, ble $HTTP_POST_VARS- og $HTTP_GET_VARS-matrisene omdøpt til henholdsvis $_POST og $_GET for konsistens, men de forsvant selv ikke fra bruk av hensyn til kompatibilitet med tidligere versjoner av PHP. I motsetning til forgjengerne, har $_POST- og $_GET-arrayene blitt superglobale, dvs. tilgjengelig direkte og inne i funksjoner og metoder.

La oss gi et eksempel på bruk av disse matrisene. La oss si at vi må behandle et skjema som inneholder inndataelementer kalt fornavn, etternavn, kurs (for eksempel form.html ovenfor). Dataene ble overført ved bruk av POST-metoden, og vi ønsker ikke å behandle data overført med andre metoder. Dette kan gjøres som følger:

$str = "Hei,
".$_POST ["fornavn"]."
".$_POST ["etternavn"] ."!
";
$str .= "Du har valgt å studere et kurs på ".
$_POST["kurs"];
ekko $str;
?>

Så på nettleserskjermen, hvis vi skrev inn navnet "Vasya", etternavnet "Petrov" og valgte PHP-kurset blant alle kurs, vil vi se en melding, som i forrige eksempel:

Hei, Vasya Petrov!
Du har valgt å studere et PHP-kurs

For å opprettholde muligheten til å behandle skript tidligere enn PHP 4.1.0, ble register_globals-direktivet introdusert, som tillot eller nektet tilgang til variabler direkte ved navn. Hvis register_globals=On-parameteren er i PHP-innstillingsfilen, kan variabler som sendes til serveren ved hjelp av GET- og POST-metodene, bare åpnes med navnene deres (dvs. du kan skrive $first_name). Hvis register_globals=Av, må du skrive $_REQUEST["first_name"] eller $_POST["first_name"], $_GET["first_name"], $HTTP_POST_VARS["first_name"], $HTTP_GET_VARS["first_name"]. Fra et sikkerhetssynspunkt er det bedre å deaktivere dette direktivet (dvs. register_globals=Off). Med register_globals-direktivet aktivert, vil arrayene oppført ovenfor også inneholde dataene som sendes av klienten.

Noen ganger må du vite verdien av en miljøvariabel, for eksempel metoden som ble brukt til å sende forespørselen eller IP-adressen til datamaskinen som sendte forespørselen. Du kan få denne informasjonen ved å bruke getenv()-funksjonen. Den returnerer verdien til miljøvariabelen hvis navn sendes til den som en parameter.

getenv("REQUEST_METHOD");
// vil returnere metoden som er brukt
echo getenv("REMOTE_ADDR");
// vil vise brukerens IP-adresse,
// hvem som sendte forespørselen
?>

Som vi sa, hvis GET-metoden brukes, overføres dataene ved å legge til en spørringsstreng i form av variabelnavn=verdi-par til ressurs-URLen. Alt etter spørsmålstegnet i URL-en kan hentes ved hjelp av kommandoen

getenv("QUERY_STRING");

Takket være dette er det mulig å overføre data i en annen form ved hjelp av GET-metoden. For eksempel kan du spesifisere bare verdiene til flere parametere ved hjelp av et plusstegn, og i skriptet kan du analysere spørringsstrengen i deler, eller du kan sende verdien til bare én parameter. I dette tilfellet vil et tomt element med en nøkkel lik denne verdien (hele spørringsstrengen) vises i $_GET-matrisen, og "+"-tegnet som påtreffes i spørringsstrengen vil bli erstattet med en understreking "_".

Med POST-metoden overføres data kun ved hjelp av skjemaer, og brukeren (klienten) ser ikke hvilke data som sendes til serveren. For å se dem må hackeren erstatte skjemaet vårt med sitt eget. Deretter vil serveren sende resultatene av behandlingen av feil skjema til feil sted. For å unngå dette kan du sjekke adressen til siden som dataene ble sendt fra. Dette kan gjøres igjen ved å bruke getenv()-funksjonen:

getenv("HTTP_REFERER");

Nå er tiden inne for å løse problemet formulert i begynnelsen av forelesningen.

Eksempel på behandling av en forespørsel med PHP

La oss huske hva oppgaven var og avklare formuleringen. Du må skrive et skjema for å registrere deltakere i korrespondanseskolen for programmering og etter registrering sende en melding til deltakeren. Vi har kalt dette budskapet det universelle brevet, men det vil være litt annerledes enn brevet vi skrev i forrige forelesning. Her vil vi heller ikke sende noe på e-post, for ikke å være som spammere, men vil ganske enkelt generere denne meldingen og vise den på nettleserskjermen. Vi har allerede gitt den første versjonen av registreringsskjemaet ovenfor. Vi vil endre det slik at hver registrar kan velge så mange kurs de ønsker å delta på, og vi vil ikke bekrefte mottak av påmeldingsskjema.

Alt her er ganske enkelt og oversiktlig. Det eneste å merke seg er måten verdiene til avkrysningsbokselementet sendes på. Når vi skriver kurs i elementnavnet, betyr dette at det første avkryssede elementet vil bli skrevet til det første elementet i kurs-matrisen, den andre avkryssede avkrysningsboksen vil bli skrevet til det andre matriseelementet, osv. Du kan selvfølgelig ganske enkelt gi forskjellige navn til avkrysningsbokselementene, men dette vil komplisere databehandlingen hvis det er mange kurs.

Skriptet som skal analysere og behandle alt dette kalles 1.php (skjemaet refererer spesifikt til denne filen, som er skrevet i handlingsattributtet). Som standard brukes GET-metoden for overføring, men vi spesifiserte POST. Basert på informasjonen mottatt fra den registrerte personen, genererer scriptet en tilsvarende melding. Hvis en person har valgt noen kurs, vil han få melding om tidspunktet de skal holdes og foreleserne som underviser i dem. Hvis en person ikke har valgt noe, vises en melding om neste møte i Correspondence School of Programmers (ZSH).

HTML-skjemaer gjør at brukerangitte data kan sendes til en server, hvor de kan behandles videre. Skjemavedlikehold utføres i to trinn. Skjemaet må først presenteres for brukeren, som vil fylle det ut med sine data og deretter sende det til serveren. Hvert skjema har en destinasjonsside som må lastes inn for å behandle dataene som er sendt inn av brukeren. Dette er ofte den samme skriptfilen som genererer skjemaet. I dette tilfellet ser PHP-koden ganske enkelt etter data i skjemaet for å avgjøre om skriptet skal kalles på nytt for å lage skjemaet eller begynne å behandle de mottatte dataene.

Merk følgende! Leksjonen er utdatert. Nye leksjoner om dette emnet finnes i kurset PHP for nybegynnere.

I de fleste tilfeller innebærer innsending av skjemaer til serveren en slags databasearbeid. For eksempel er en databasesøkeoperasjon en nødvendig handling for de fleste forskjellige applikasjoner, enten det er å søke i foruminnlegg, brukere eller en blogg. I alle fall kan denne operasjonen gjøre brukerens liv enklere. Fordi På dette tidspunktet har vi ennå ikke blitt kjent med samspillet mellom PHP og MySQL DBMS, i denne artikkelen skal vi se på enkle eksempler på skjemabehandling, og hovedoppgaven for meg er å vise hvordan informasjon overføres ved hjelp av PHP-språket .

Overføre informasjon ved hjelp av PHP-språk

Denne delen gir grunnleggende informasjon om hvordan data kan overføres mellom nettsider. Noe av denne informasjonen er ikke utelukkende knyttet til PHP-teknologi, men beskriver samspillet mellom PHP- og HTML-verktøy eller angår selve HTTP-protokollen.

Mangel på statlig støtte i HTTP-protokoll

Den viktigste egenskapen til enhver webteknologi som alltid bør huskes er at selve HTTP-protokollen er statsløs. Dette betyr at hver HTTP-forespørsel (som i de fleste tilfeller utgjør en forespørsel om å motta og levere en enkelt ressurs, for eksempel en HTML-side, en .jpg-fil, et stilark osv.) er uavhengig av alle andre forespørsler, ikke inkludere enhver - informasjon om klientens identifikasjon og etterlater ikke spor i datamaskinens minne.

Selv om siden er utformet på en slik måte at navigasjonen, dvs. overgang fra en side til en annen skjer strengt tatt i én retning (la oss si at side 1 bare fører til side 2, som bare fører til side 3 osv.), HTTP-protokollstøtteverktøy har ikke informasjon og tar ikke hensyn til at en bruker visning av side 2 må ha besøkt side 1 tidligere. Du kan ikke tilordne en verdi til en variabel på side 1 og forvente at den blir importert til side 2 ved hjelp av selve HTML. HTML-kode kan brukes til å vise et skjema, og denne koden kan til og med brukes til å legge inn informasjon, men med mindre noen ekstra midler brukes til å overføre den angitte informasjonen til en annen side eller et annet program, vil verdien som er tildelt variabelen ganske enkelt forsvinne etter flytting til en annen side.

Skjemabehandlingsteknologier som PHP er designet for å løse akkurat dette problemet. PHP lar deg avskjære verdien til en variabel som sendes fra forrige side til neste og gjøre denne verdien tilgjengelig for senere bruk. Som det viser seg, gir PHP-teknologi muligheten til å utføre disse typer dataoverføringsfunksjoner ekstremt bra, så den lar deg raskt og enkelt distribuere de nødvendige verktøyene for å løse en rekke problemer knyttet til å sikre funksjonen til et nettsted.

HTML-skjemaer gir en praktisk måte å overføre et lite antall verdier fra en gitt side til en hvilken som helst annen enkeltside på et nettsted. Det finnes andre måter å opprettholde tilstanden på på tvers av mange sidevisninger som varer lenger, for eksempel informasjonskapsler og økter, som vil bli dekket i en fremtidig artikkel. Denne artikkelen fokuserer hovedsakelig på de enkleste måtene å overføre informasjon mellom nettsider, som bruker GET- og POST-metoder i kombinasjon med HTTP-protokollen for å lage dynamisk genererte sider og behandle skjemadata.

GET parametere

GET-metoden overfører parametere fra forrige side til neste som en del av en spørringsstreng, som er representert i formatet til en Uniform Resource Identifier URI. Når du bruker GET-metoden til å behandle et skjema, blir URL-en identifisert av skjemaets handlingsattributt fulgt av et spørsmålstegn etter skilletegnet, etterfulgt av de angitte variabelnavnene og verdien(e), og deretter er hele strengen sendt til behandlingsagenten (i dette tilfellet webserveren).

Nedenfor er et eksempel på et HTML-skjema som bruker GET-metoden (skriv inn denne markeringen og lagre filen som sportselect.html):

Grunnleggende om PHP

Velg din favorittsport

Når brukeren foretar sitt valg og klikker på Send-knappen, vil nettleseren koble til følgende elementer i den viste rekkefølgen, uten mellomrom mellom elementene:

  • URL i anførselstegn etter ordet handling (http://localhost/sports.php).
  • Et spørsmålstegn (?) som indikerer at følgende tegn utgjør en GET-streng.
  • Navnevariabelen, likhetstegnet (=) og den tilsvarende verdiparameteren (verdi=Hockey).
  • Et-tegnet (&) etterfulgt av navn=verdi-paret (hvis noen).

Så nettleseren vil generere følgende URL-streng:
http://localhost/sports.php?sport=Hockey

Nettleseren omdirigerer deretter den resulterende URL-strengen innenfor sitt eget adresseområde som en ny forespørsel. PHP-skriptet nedenfor (sports.php), som skjemaet sendes til, henter GET-variabelverdiene fra den siste delen av spørringsstrengen, setter inn disse variablene og variabelverdiene i $_GET superglobal matrisen (som skal være beskrevet kort), og utfører noen nødvendige handlinger med disse verdiene; i dette tilfellet skjer innsettingen i en tekststreng.

Nedenfor er et kodeeksempel som viser PHP-skjemabehandleren for HTML-skjemaet ovenfor:

Favoritt sport

Din favorittsport er

Merk at verdien som er angitt i HTML-skjemafeltet med attributtet name="sport" på forrige side, nå er tilgjengelig som en PHP-variabel kalt $_GET["sport"]. Følgende figur viser hvordan dette eksemplet fungerer:

Nå må vi forklare nøyaktig hvordan du kan få tilgang til verdiene som sendes fra side til side. Denne artikkelen diskuterer de to hovedmetodene for å overføre verdier som brukes i skjemaer - GET og POST. Hver metode har en superglobal matrise knyttet til seg. Superglobale arrays er beskrevet mer detaljert i artikkelen "Variables and Constants". Et særtrekk ved superglobale matriser fra andre matriser er tilstedeværelsen av et prefiks i navnet i form av et understrek.

Skjemabehandleren får tilgang til hvert element som sendes inn ved å bruke GET-metoden ved å få tilgang til $_GET-matrisen, og hvert element som sendes inn ved å bruke POST-metoden ved å få tilgang til $_POST-matrisen. Den syntaktiske strukturen som brukes for å få tilgang til ethvert element i en superglobal matrise er enkel og fullstendig enhetlig:

$_array_name["indeksnavn"]

Her er indeksnavn navnedelen av navn-verdi-paret (for GET-metoden), eller navnet på HTML-skjemafeltet (for POST-metoden). Etter det forrige eksempelet spesifiserer $_GET["sport"] verdien av det valgte elementet i skjemaet kalt "sport"; denne verdien ble sendt ved hjelp av en GET-operasjon utført på den opprinnelige filen. Skjemabehandleren må bruke en matrise som tilsvarer metoden som dataene ble sendt på. Nærmere bestemt, i dette eksemplet er verdien av $_POST["sport"] udefinert fordi det opprinnelige skjemaet ikke sendte inn noen data ved bruk av POST-metoden.

GET-skjemabehandlingsmetoden har en betydelig fordel i forhold til POST-metoden - den lar deg faktisk generere en ny URL-spørringsstreng hver gang, tilpasset den nåværende situasjonen. Brukere kan deretter bokmerke denne siden. På den annen side kan ikke resultatene av skjemainnleveringer ved bruk av POST-metoden bokmerkes.

Bare fordi ønsket funksjonalitet kan oppnås ved å bruke GET-parametere, betyr ikke det at GET-metoden må brukes. Ulempene med GET-metoden som finnes i de fleste typer skjemabehandling er så betydelige. Den originale HTML 4.0 arbeidsspesifikasjonen, publisert i 1997, anbefalte ikke denne metoden. De viktigste ulempene med GET-metoden er listet opp nedenfor:

  • GET-metoden er ikke aktuelt for å lage registreringsvinduer, siden brukernavnet og passordet er helt synlig på skjermen, og det er også mulig at disse dataene lagres i minnet til klientens nettleser som informasjon om siden som besøkes.
  • Hver GET-overføringsoperasjon, inkludert selve datasettet, logges på webserveren.
  • GET-metoden tildeler data til en servermiljøvariabel, så lengden på URL-en er begrenset. Du har kanskje sett hvordan veldig lange nettadresser ser ut når de sendes med GET-metoden, og det er faktisk usannsynlig at noen vil sende en HTML-tekst på 300 ord ved å bruke denne metoden.

Den opprinnelige HTML-spesifikasjonen sa at lengden på søkestrengen ikke skulle overstige 255 tegn. Selvfølgelig ble denne begrensningen senere fjernet, og bare anbefalingen gjensto om å overholde grensen på 255 tegn, men bruk av lengre linjer kan fortsatt forårsake forstyrrelser.

POST-parametere

Foreløpig er den foretrukne metoden for å sende inn skjemadata POST (spesielt i tilfeller der utførelse av handlinger resulterer i permanente endringer, for eksempel å legge inn informasjon i en database). Skjemadatasettet er inkludert i skjemateksten når skjemaet omdirigeres til behandlingsagenten (i dette tilfellet PHP-tolken). URL-strengen gjennomgår ingen synlige endringer for å gjenspeile variasjonen av data som overføres.

Det er en utbredt uberettiget tro blant utviklere at POST-metoden er sikrere enn GET. I virkeligheten er ingen av metodene mer eller mindre sikre enn den andre. En besøkende kan se variabler og data sendt ved hjelp av POST-metoden like godt som ved å bruke GET-metoden. Den eneste forskjellen er at i det første tilfellet blir de overførte dataene ikke funnet i adressefeltet. Men dette betyr ikke at de er skjult. Data sendt ved hjelp av POST-metoden kan ses og endres av brukeren av nettstedet.

Den første og viktigste regelen for programmering, spesielt nettverksprogrammering, er denne:
Stol aldri på inndata.

Du bør alltid anta at en besøkende kan ha ondsinnet, eller til og med ved et uhell, endret dataene som sendes til en bestemt applikasjon, så du må sjekke disse dataene nøye.

De overførte skjemadataene er bare mer eller mindre sikre hvis forespørselen er sikret med SSL, TLS eller en annen krypteringsmetode. Men dataene kommer fortsatt til sluttbrukeren eller besøkende i klar form, så han har fortsatt muligheten til å se og endre dataene på en eller annen måte. Faktum er at SSL-protokollen ganske enkelt krypterer data som overføres over nettverket, noe som ikke tillater at dataene vises i klartekst på tidspunktet for overgangen fra avsender til mottaker. Når det gjelder muligheten for en besøkende til å gjøre endringer i skjemadata, gir ikke SSL-protokollen noe som forhindrer dette.

For å endre måten data overføres på i forrige eksempel, må du gjøre følgende endringer:

...

Arbeid med flere verdier

Hvis skjemaet har avmerkingsbokser eller alternativknapper, oppstår et nytt problem. For eksempel kan en bruker velge to verdier samtidig i et skjema, men en variabel kan ikke lagre mer enn én verdi, så en matrise må brukes. Denne situasjonen er vist i eksemplet nedenfor:

" method="post">
Velg dine favoritt kjæledyr

Dyr som er valgt: "; foreach ($animal som $a) ( echo " ".htmlentities($a).""; } } ?>

Dette skjemaet lar brukeren velge sine favoritt kjæledyr. I dette eksemplet kan brukeren merke av for flere avmerkingsbokser samtidig. Dette betyr at når du behandler skjemadata i et PHP-skript, er det nødvendig å gi muligheten til å få tilgang til flere verdier ved å bruke ett navn. Vi har plassert et par firkantede parenteser () etter navnet i name-attributtet for å kunne sende flere valg som en matrise. Hvis de firkantede parentesene ble utelatt og brukeren merket av for flere avmerkingsbokser, vil valget deres bli overskrevet av den sist avmerkede boksen. Ved å sette firkantede parenteser etter navnet indikerte vi at verdiene skulle lagres som en matrise.

I behandleren lagres arrayen i $animal-variabelen og telles opp ved hjelp av en foreach-løkke, som en vanlig array.

Skjemavalidering og formatering av skjemavariabler

Når en applikasjon mottar data fra en bruker, må den kontrollere at de er korrekte hver gang. Hvis du ikke sjekker dataene som er lagt inn av brukeren, kan du få mange problemer, inkludert sikkerhetsrisikoer. Å utføre en bakgrunnssjekk er ikke så vanskelig som det kan virke.

Det er mer praktisk for brukere å sjekke på klientsiden ved hjelp av JavaScript, men uansett om denne sjekken brukes, må verifisering på serversiden utføres.

En annen ting å vurdere når du oppretter HTML-skjemaer, er at hvis skjemaet må vise forhåndsutfylte inndata, må verdiattributtet angis. Dette punktet gjelder spesielt to typer skjemaer - de som brukes til å redigere data mottatt fra en database, og de som er designet for å muligens sende inn data mer enn én gang. Sistnevnte tilfelle er svært vanlig i situasjoner der skjemaet må vises på nytt etter at det er oppdaget feil i data som allerede er utfylt på forhånd. Et eksempel kan være et registreringsskjema som ikke aksepterer data for behandling før brukeren oppgir en gyldig e-postadresse eller andre nødvendige data.

Eksemplet nedenfor viser hvordan du behandler et skjema, inkludert serversidevalidering og behandling på samme skjemaside:

Grunnleggende om PHP

" method="post">
Kontaktinformasjon "klasse="">
"klasse="">

Dette eksemplet bruker filter_var()-funksjonen, som tester en variabel ved hjelp av et filter og tar to parametere - en kildestreng og en konstant som indikerer filtertypen. I tillegg til å validere e-postadresser (FILTER_VALIDATE_EMAIL), støtter denne funksjonen følgende konstanter: FILTER_VALIDATE_URL - kontrollerer verdien for riktigheten av URL-en (for eksempel), FILTER_VALIDATE_IP - kontrollerer verdien for riktigheten av IP-adresser, FILTER_VALIDATE_REGEXP - kontrollerer verdien for riktigheten av det regulære uttrykkssyntaksen og flere andre konstanter, som er alternativer til funksjonene is_bool(), is_float(), is_int(), etc.

Denne og de følgende delene vil kort dekke hvordan du lager grunnleggende webapplikasjoner ved hjelp av PHP. Det som ble diskutert i avsnittet er tydeligvis ikke nok til at applikasjonen din kan kommunisere med brukeren og formulere seg avhengig av handlingene han utførte eller parameterne han skrev inn. Hva mangler? Det er ikke nok kunnskap om hvordan man organiserer brukerdatainngang og overføring av disse dataene til serveren. Vel, du bør allerede ha grunnleggende kunnskap om hvordan du programmatisk behandler informasjon mottatt på serveren.

HTTP-forespørselsmetoder og deres parametere

Enhver dynamisk webapplikasjon genererer et svar til brukeren i samsvar med parametrene han har lagt inn eller handlingene utført på klientsiden. Å kontakte serveren kommer oftest ned til to typer forespørsler: bruk av GET-metoden eller POST-metoden. Noen få ord om forskjellene mellom disse to typene forespørsler.

GET metode:

    Parametrene sendes i HTTP-forespørselsoverskriften, slik at de er synlige på kommandolinjen, og en slik forespørsel kan lagres som bokmerker. Siden den totale lengden på overskriften er begrenset, er antallet og lengden på parametere som sendes med GET også begrenset.

    Det antas at resultatene av flere identiske GET-forespørsler utført på rad bør være de samme.

POST metode:

    Forespørselsparametere sendes i hoveddelen av HTTP-forespørselen, så de er ikke til stede på kommandolinjen. Antall og størrelse på parametere er ubegrenset.

    Det antas at resultatene av flere identiske POST-forespørsler kan returnere forskjellige verdier fordi de kan endre egenskapene til målobjektet.

GET-metoden bør brukes til å hente innholdet i en informasjonsressurs i henhold til parametere når det ikke er behov for å gjøre endringer i datastrukturene til målressursen, og det er fornuftig å lagre forespørselen (URL) i bokmerker. GET-metoden kan være raskere enn lignende forespørsler ved bruk av POST-metoden.

POST-metoden bør brukes når du trenger å skjule parametere som sendes til serveren fra URL-en. Denne metoden bør også brukes i forespørsler om endringer i innholdet i målressursen, ved å gi en beskrivelse av disse endringene i parameterne (i forespørselens brødtekst).

Sti til ressurs?parameter1=verdi1¶meter2=verdi2&...

Hvis du ikke har et spesielt HTML-skjema for å fylle ut parametere, kan du feilsøke driften av PHP-applikasjonen din ved å sende testparametere direkte på nettleserens kommandolinje, for eksempel:

Http://site/php-samples/sql.php?sql=select * fra d_staff

For å få tilgang til forespørselsparametere på serversiden, bør du bruke globale arrays $_GET Og $_POST hhv. Hvis applikasjonen din ikke bryr seg om hvilken metode du får tilgang til den, bør du bruke en matrise $_REQUEST, som kombinerer dataene til $_GET- og $_POST-matrisene, for eksempel slik:

$sql = isset($_REQUEST["sql"]) ? $_REQUEST["sql"] : "";

I dette eksemplet bestemmer programmet om "sql"-parameteren ble sendt: hvis ja, tildeler den verdien til den tilsvarende variabelen, og hvis ikke, tildeler den den en tom verdi.

Definere HTTP-forespørselsparametere via HTML-skjema

Selvfølgelig er det ikke veldig praktisk å definere parametere manuelt direkte i nettleserens kommandolinje. Denne metoden er egnet for programmatisk kjøring av HTTP-forespørsler når nettapplikasjoner kommuniserer med hverandre. For å gå inn og utføre innledende dataverifisering på klientsiden, bør du bruke HTML-skjemaer og . Nedenfor er et eksempel på det enkleste skjemaet der en tekstparameter (verdi) legges inn, som deretter sendes til serveren som en parameter for POST-metoden.

metode ="post" handling =’sql.php’ > SQL:

Metodeattributtet til formelementet spesifiserer metoden som bestemmer metoden for å overføre data til serveren (get eller post). Action-attributtet spesifiserer php filen, som vil behandle forespørselen. Hvis behandleren skal være gjeldende fil, trenger ikke handlingsattributtet å legges til. For alle elementer hvis verdi må sendes som en HTTP-forespørselsparameter, må du definere en unik verdi for navneattributtet. Det er attributtverdien Navn vil være indeks i matrisene $_GET, $_POST eller $_REQUEST (se eksempel ovenfor). Trykke på en knapp sende inn sender skjemaet med alle angitte verdier til serveren.