Skillnaden mellan get- och post-förfrågningar. Skapar POST- och GET-förfrågningar
Nuförtiden används oftast bara två HTTP-metoder: GET och POST. Men det visade sig att även bland dessa två "tallar" lyckas webbutvecklare gå vilse. Det finns en förklaring till detta: båda metoderna kan användas för att få samma resultat. Men vi måste komma ihåg att tanklös användning av någon av metoderna kan leda till katastrofala konsekvenser, inklusive tunga laster till kanalen och säkerhetshål.
För att undvika detta räcker det att helt enkelt förstå mer detaljerat syftena och skillnaderna med dessa metoder.
Om man fördjupar sig i betydelsen av metodnamn kommer mycket att bli tydligare. GET (från engelska till att ta emot), d.v.s. ska användas för att söka efter data. POST (från engelska skicka via post) - används för att skicka data till servern. Allt verkar vara extremt enkelt och tydligt. Men vem vill utveckla hemsidor lite mer komplicerade än en visitkortswebbplats med en form? respons, det är bättre att lära känna frågan bättre.
Säkra och osäkra HTTP-förfrågningar
HTTP 1.1-specifikationen introducerar två koncept: säker och osäker begäran, eller mer exakt, metod.
Säkra metoder är metoder som bara kan begära information. De kan inte ändra den begärda resursen, och de kan inte heller leda till oönskade resultat för användaren, andra eller servern. Exempel på säkra är att begära HTML-koden för en webbsida eller bild. Säkra metoder inkluderar HEAD och GET.
Anteckningen
I verkligheten kan hantverkare naturligtvis orsaka skada med GET-förfrågningar. Till exempel frågeloopar.
Osäkra frågor, som alla redan har gissat, kan potentiellt leda till dåliga konsekvenser om de används igen. Sådana förfrågningar kan ändra innehållet i den resurs som nås. Exempel på sådana förfrågningar: skicka meddelanden, registrering, onlinebetalningar. Osäkra metoder inkluderar POST, PUT, DELETE.
Idempotenta metoder
Idempotens är en egenskap hos metoder som, med många upprepade anrop, kommer att returnera samma resultat, förutom i de fall då informationen är inaktuell. Detta innebär att när de kommer åt samma URL kommer alla användare att se samma webbsida, bild, video osv. Metoderna GET, PUT, DELETE har denna egenskap.
Låt oss nu titta närmare på själva GET- och POST-metoderna: låt oss skriva en kort "sammanfattning" för var och en.
SKAFFA SIG
- utformad för att ta emot data från servern;
- begärandekroppen är tom;
- bearbetas snabbare på serversidan och med mindre förbrukning av serverresurser på grund av den tomma förfrågningskroppen;
- Variabler skickas in adressfält(så här ser användaren det, tekniskt sett tillhandahålls data i frågeraden) och därför är information om variablerna och deras värden synlig (data är inte skyddade);
- kan överföra en liten mängd data till servern: det finns begränsningar för längden på webbadressen, vilket beror på webbläsaren, till exempel IE6 = 2Kb. Yahoo!-utvecklare rekommenderar att du fokuserar på detta nummer;
- kan bara överföra ASCII-tecken;
- en sådan begäran kan kopieras och sparas (till exempel i bokmärken);
- begäran kan cachelagras (detta kan kontrolleras);
- för att ytterligare minska belastningen på kanalen och servern finns villkorliga och partiella förfrågningar tillgängliga;
- sliter inte HTTP-anslutning(med keepAlive-läge aktiverat på servern).
POSTA
- avsedd för att skicka data till servern;
- dataöverföring sker i huvuddelen av begäran;
- Bearbetning på serversidan är långsammare och "tyngre" än GET, eftersom förutom rubriker måste förfrågningskroppen analyseras;
- kapabel att överföra stora mängder data;
- kapabel att överföra filer;
- en sida genererad med POST-metoden kan inte sparas som bokmärken;
- bryter HTTP-anslutningen;
- För att överföra även en mycket liten mängd information, skickar de flesta webbläsare minst två TCP-paket: en rubrik och sedan en text av begäran.
Det visar sig att dessa två metoder inte är så lika. Användningen av en eller annan bör bestämmas av den aktuella uppgiften, och inte av det faktum att GET används som standard eller är lättare att arbeta med. GET är naturligtvis ett bättre alternativ i de flesta fall, särskilt när du bygger snabb AJAX, men glöm inte dess nackdelar. För mig själv gjorde jag en enkel algoritmanteckning om valet av metod.
Du kanske har märkt att på de flesta webbplatser kan du se följande adresser:
Http://site/index.php?blog=2
Här, även utan att känna till php, kan du gissa att vi kommer åt en fil index.php Men få människor vet vad som kommer efter frågetecknet. Det är ganska enkelt: ?blogg=2 Detta är en deklaration av den globala variabeln "$_GET["blogg"]" med värdet "2". Således skickar jag in en variabel i skriptet som ansvarar för att visa information från databasen. Låt oss skriva ett litet manus där du tydligt kan se allt:
if(isset($_GET["blogg"])) (
echo $_GET["blogg"];
}
?>
Vi använder villkorsoperatorn if() och följande rad används som villkor:
Isset($_GET["blogg"])
isset() låter dig ta reda på om variabeln som anges inom parentes existerar, det vill säga villkoret som jag beskrev i koden låter så här: Om variabeln $_GET["blogg"] finns, visa då innehållet i denna variabel på skärmen. Här är vad som hände:
Jag tror att det är uppenbart att en global variabel skapas $_GET med identifieraren som vi deklarerade i adressfältet ( V I detta fall med id "blogg")
Nu vill jag klargöra en punkt. Anta att vi behöver deklarera två variabler, hur gör man detta? Den första variabeln deklareras efter frågetecknet "?" Den andra variabeln deklareras efter "&"-tecknet ( För att vara ärlig så vet jag inte vad det här tecknet är), här är en exempeldeklaration av tre variabler:
Http://site/index.php?a=1&b=2&c=3
Här är utdatakoden:
if(isset($_GET["a"]) AND isset($_GET["b") OCH isset($_GET["c"])) (
echo $_GET["a"]."
";
echo $_GET["b"]."
";
echo $_GET["c"]."
";
}
?>
Tillståndet låter så här:
Om det finns en global variabel $_GET["a"] och en global variabel $_GET["b"] och en global variabel $_GET["c"] visar du dem på skärmen, här är resultatet:
Blanketter
Innan vi kommer till posta förfrågningar måste du förstå vad formulär är? Varför är det nödvändigt? Eftersom den globala variabeln $_POST[""] skapas genom formulär. Vad är form? Dessa är fält där användaren kan ange viss information. Det finns enradsfält, stora fält och även radioknappar och kryssrutor. Låt oss titta på allt i ordning...
Formuläret är en tagg:
Formuläret har attribut, jag kommer att lista de vanligaste:
Låt oss skapa ett formulär:
Jag ställer in filen som en hanterarfil test.php eftersom det är i den jag skriver exempel åt dig. Jag ställer in sändningsmetoden för att posta eftersom det här är metoderna som används i 99,9 % av fallen. Jag gav också vårt formulär ett namn - form
Låt oss nu kasta oss in i formelementens värld. Det första du behöver förstå är att nästan alla element är en tagg den enda skillnaden är i attributet typ vid dessa taggar. Låt mig lista de formulärelement som används:
Jag är säker på att du har sett sådana fält mer än en gång, så här är vad de säger: "inga kommentarer"
Låt oss nu skapa ett litet utbildningsformulär som vi kommer att arbeta vidare med. Vår uppgift är att skapa ett litet frågeformulär som berättar namnet på personen som fyller i det, kön, vilket land de kommer ifrån, favoritfärg och ett textfält där användaren kan lägga till något om sig själv. Här är vad jag fick: