Leren werken met GET- en POST-verzoeken. Perl - Bestanden verzenden naar een HTTP-server met een verzoek Perl - Bestanden verzenden naar een HTTP-server met een verzoek
Het is je misschien opgevallen dat je op de meeste sites de volgende adressen kunt zien:
Http://site/index.php?blog=2
Hier kun je, zelfs zonder php te kennen, raden dat we toegang hebben tot een bestand index.php Maar weinig mensen weten wat er na het vraagteken komt. Het is vrij eenvoudig: ?blog=2 Dit is een declaratie van de globale variabele "$_GET["blog"]" met de waarde "2". Daarom geef ik een variabele door aan het script die verantwoordelijk is voor het weergeven van informatie uit de database. Laten we een klein script schrijven waarin je alles duidelijk kunt zien:
if(isset($_GET["blog"])) (
echo $_GET["blog"];
}
?>
We gebruiken de voorwaardeoperator if(); voorwaarde is de volgende regel:
Isset($_GET["blog"])
Met isset() kun je uitzoeken of de variabele die tussen haakjes is opgegeven, bestaat, dat wil zeggen dat de voorwaarde die ik in de code heb beschreven als volgt klinkt: Als de variabele $_GET["blog"] bestaat, geef dan de inhoud van deze variabele weer op het scherm. Dit is wat er gebeurde:
Ik denk dat het duidelijk is dat er een globale variabele wordt gemaakt $_GET met de ID die we in de adresbalk hebben aangegeven ( in dit geval met de identificatie “blog”)
Nu wil ik één punt verduidelijken. Stel dat we twee variabelen moeten declareren, hoe moet dat dan gebeuren? De eerste variabele wordt gedeclareerd na het vraagteken "?" De tweede variabele wordt gedeclareerd na het “&” teken ( Eerlijk gezegd weet ik niet wat dit teken is), hier is een voorbeelddeclaratie van drie variabelen:
Http://site/index.php?a=1&b=2&c=3
Hier is de uitvoercode:
if(isset($_GET["a"]) AND isset($_GET["b"]) AND isset($_GET["c"])) (
echo $_GET["a"]."
";
echo $_GET["b"]."
";
echo $_GET["c"]."
";
}
?>
De toestand klinkt als volgt:
Als er een globale variabele $_GET["a"] en een globale variabele $_GET["b"] en een globale variabele $_GET["c"] is, geef deze dan op het scherm weer, hier is het resultaat:
Formulieren
Voordat we er zijn na verzoeken, moet u begrijpen wat formulieren zijn? Waarom is het nodig? Omdat de globale variabele $_POST[""] via formulieren wordt aangemaakt. Wat is vorm? Dit zijn velden waarin de gebruiker bepaalde informatie kan invoeren. Er zijn velden met één regel, grote velden, maar ook keuzerondjes en selectievakjes. Laten we alles in volgorde bekijken...
Het formulier is een tag:
Het formulier heeft attributen, ik zal de meest voorkomende opsommen:
Laten we een formulier maken:
Ik heb het bestand ingesteld als het handlerbestand test.php omdat ik daarin voorbeelden voor je schrijf. Ik heb de verzendmethode ingesteld op posten, omdat dit de methoden zijn die in 99,9% van de gevallen worden gebruikt. Ik heb ons formulier ook een naam gegeven: formulier
Laten we nu een duik nemen in de wereld van vormelementen. Het eerste dat u moet begrijpen, is dat bijna alle elementen een tag zijn het enige verschil zit in het attribuut type bij deze labels. Ik zal de gebruikte formulierelementen opsommen:
Ik weet zeker dat je dergelijke velden meer dan eens hebt gezien, dus hier is wat ze zeggen: “geen commentaar”
Laten we nu een kleine trainingsvragenlijst maken, waarmee we verder zullen werken. Onze taak is om een kleine vragenlijst te maken die ons de naam vertelt van de persoon die de vragenlijst invult, het geslacht, het land waar hij of zij vandaan komt, de favoriete kleur en een tekstveld waarin de gebruiker iets over zichzelf kan toevoegen. Dit is wat ik heb:
Daarom hebben we een HTML-pagina gemaakt met een eenvoudig formulier. Houd er rekening mee dat de POST-methode alleen in een formulier kan worden gebruikt.
De eerste parameter van het formulier is “methode”, deze definieert de methode die we voor de overdracht zullen gebruiken. Zoals je misschien al geraden hebt, is dit GET of POST. Als GET is ingesteld, worden bovendien alle veldnamen (in de vorm van namen van variabelen), evenals hun waarden, door verwijzing doorgegeven, zoals in de sectie over de GET-methode. Als POST is ingesteld, worden alle namen en waarden van variabelen als browserverzoek naar de webserver verzonden. Dat wil zeggen dat ze niet zichtbaar zijn in de adresbalk. In veel gevallen is dit erg handig. POST is ook veiliger, wat begrijpelijk is, omdat variabelen met hun waarden niet meer zo eenvoudig te bewerken zijn, hoewel het ook wel mogelijk is.
De tweede vormparameter is ‘actie’. Dit is het pad en de naam van het scriptbestand waaraan we de gegevens doorgeven. In ons geval is dit index.php. Dit pad kan volledig worden verzonden, dat wil zeggen als volgt: action = “https://my_site.ru/index.php”. Als u de waarde van de parameter "action" niet opgeeft, wordt alle informatie overgebracht naar het hoofdscript, dat wil zeggen de indexpagina index.php van uw site, wat vrij logisch is.
Nu halen we de gegevens uit ons formulier. Omdat we het hebben doorgegeven aan index.php, staat hieronder de code van deze specifieke pagina:
"; echo "naam - "; echo $_POST["gebruikersnaam"]; echo "
age - "; echo $_POST["age"]; echo " years"; ) else ( echo "Variabelen zijn niet aangekomen. Controleer alles opnieuw."; ) ?>
Vergeet niet te controleren op leegte en geldige waarden. Vervolgens moeten we verduidelijken waarom onze variabelen gebruikersnaam en leeftijd worden genoemd? En kijk naar de velden van het formulier dat we hierboven hebben gemaakt. Zie daar invoer naam = "gebruikersnaam" type = "tekst"? Dit is waar de naamparameter de naam specificeert van de variabele die we met dit veld zullen krijgen. Hetzelfde geldt voor de leeftijd. Ik hoop dat het duidelijk is. Welnu, het verkrijgen van een variabele en de waarde ervan via POST verschilt bijna niet van GET, wat we hierboven hebben besproken.
Nou, het bleek een grote les te zijn, maar wel een van de nuttigste, omdat het doorgeven van variabelen tussen formulieren en pagina's precies de interactiviteit is waarvoor we PHP gebruiken.