Ik heb een URL-structuur met een queryreeks en een parameter met de naam position.
Http://computerhelpwanted.com/jobs/?occupation=administrator&position=network+administrator
Ik heb ook een vervolgkeuzelijst voor formulierselectie met de formulierkeuzenaam position .
Wanneer de gebruiker een selectie maakt, stuurt deze de parameterwaarden naar het action-attribuut met select name="position" als de parameter die in de querystring moet worden gebruikt.
Mijn vraag is: hoe krijg ik toegang tot de formulierselectiewaarden, afzonderlijk van de waarden van de queryreeks?
Ik gebruik de _GET-methode om een waarde aan te roepen uit een queryreeksparameter.
$position = isset($_GET["positie"]) ? ($_GET["positie"]): "";
Het is duidelijk dat dit zijn waarde ontleent aan de URL-structuur, niet aan het formulierelement. Of misschien wel, dat weet ik niet zeker. Maar als ik het test, schijn ik tot de conclusie te zijn gekomen dat het het via een URL ontvangt en niet via de vorm.
Hoe kan ik toegang krijgen tot de selectiewaarde van het formulier tijdens het vergelijken in mijn PHP?
Update
Ik heb een probleem met de canonieke URL die in de header is opgegeven.
dit is hoe het zou moeten zijn
het enige verschil zijn de - en + in de queryreeks.
Niet al mijn queryreeksen hebben +. Sommigen hebben -. Maar ik toon inhoud op beide URL's, ongeacht of deze een - of + heeft. Hoe dan ook, beide URL's ontvangen dezelfde pagina-inhoud.
Maar omdat het canonieke karakter dynamisch wordt gemaakt op basis van de URI en niet op basis van de waarde van het formulierelement, zijn er op beide inhoudspagina's twee verschillende canonieke tekens.
Met _Get('value') wordt de waarde opgehaald uit de queryreeks in plaats van uit het formulierelement. Ik weet dit omdat de waarde van het formulierelement een spatie heeft tussen de netwerkbeheerder die urlencoded wordt wanneer het formulier wordt ingediend als network+administrator . Dus als ik kan vergelijken met de waarde van het formulierelement, kan ik de juiste canonieke waarde instellen.
We gaan dus opnieuw door met het bestuderen van de basisprincipes van PHP en in dit artikel zullen we kennis maken met manieren om variabelen door te geven in PHP, namelijk met GET- en POST-methoden. Elk van hen heeft zijn voor- en nadelen en wordt in geschikte situaties gebruikt, die in dit artikel zullen worden besproken. We zullen ook kijken naar codevoorbeelden die laten zien hoe de POST- en GET-methoden werken.
Variabelen doorgeven met behulp van de GET-methode
Deze methode voor het doorgeven van variabelen wordt in PHP gebruikt om variabelen door te geven aan een bestand via de adresbalk. Dat wil zeggen dat variabelen onmiddellijk via de adresbalk van de browser worden verzonden. Een voorbeeld hiervan is bijvoorbeeld een link naar een artikel in WordPress zonder gebruik te maken van CNC (SEF), dat er ongeveer zo uitziet:
Https://site/?p=315
Dat wil zeggen dat in dit geval de variabele $p met de waarde 315 wordt doorgegeven. Laten we nu de GET-methode in meer detail bekijken aan de hand van een voorbeeld. Laten we zeggen dat we drie variabelen $a, $b en $c aan het bestand moeten doorgeven GET-methode en geef hun som weer op het scherm. Je kunt hiervoor de volgende code gebruiken.
$a = $_GET["a"]; $b = $_GET["b"]; $c = $_GET["c"]; $summa = $a + $b + $c; echo "Som $a + $b + $c = $summa";
Omdat alle variabelen erin worden geplaatst globale array GET(), dan kennen we onze variabelen eerst de waarden toe van de overeenkomstige elementen van de GET-array. We doen dit helemaal aan het begin om verschillende fouten bij het doorgeven van variabelen te voorkomen. Om het werk te demonstreren, schrijven we vervolgens een willekeurige formule en geven het resultaat op het scherm weer.
Om de GET-methode te testen, voegt u eenvoudigweg een vraagteken “?” toe aan de bestandslink. en vermeld via het ampersand “&” de variabelen met hun waarden. Laten we een dossier hebben get.php, die aan de basis van de site ligt. Om variabelen naar een bestand over te brengen, schrijft u gewoon het volgende in de adresbalk.
Https://site/get.php?a=1&b=2&c=3
Zoals u in het voorbeeld kunt zien, voegen we eerst een vraagteken toe direct na de bestandsnaam. Vervolgens registreren we de variabele en geven we de waarde ervan aan met behulp van gelijken. Hierna vermelden we andere variabelen op dezelfde manier via het ampersand. Als we nu deze link volgen, zien we de som van de variabelen $a, $b en $c.
Deze methode is heel eenvoudig en vereist geen extra bestanden. Alle benodigde gegevens komen rechtstreeks via de adresbalk van de browser.
Laten we nu verder gaan met de tweede manier om variabelen door te geven in PHP - naar de POST-methode.
Variabelen doorgeven aan PHP met behulp van de POST-methode
Met deze methode kunt u in het geheim variabelen van het ene bestand naar het andere overbrengen. Zoals u al heeft begrepen, worden voor deze doeleinden meestal twee bestanden gebruikt. De eerste bevat een formulier voor het invoeren van initiële gegevens, en de tweede bevat een uitvoerend bestand dat variabelen accepteert. Laten we ter demonstratie eens kijken naar de volgende code.
Code van het eerste bestand met een formulier voor het indienen van gegevens. Laten we het de naam post-1.php geven
- actie – specificeer het bestand waarnaar de variabelen zullen worden overgebracht.
- methode - methode voor het doorgeven van variabelen. In ons geval is dit de POST-methode.
- naam – naam van het formulier. Tegelijkertijd wordt een variabele met dezelfde naam naar het bestand overgebracht.
Tekstvelden:
- naam – namen van variabelen. In ons geval is dit de voor- en achternaam (naam- en achternaamvariabelen).
- type – veldtype. In ons geval is dit een tekstveld.
- naam – de naam van de knop en de variabele die samen met andere variabelen wordt doorgegeven.
- type – knoptype. In ons geval is dit een knop voor het verzenden van gegevens.
- waarde – tekst op de knop.
De code van het tweede bestand, dat zal dienen als een variabele ontvanger. Laten we het post-2.php noemen
$naam = $_POST; $achternaam = $_POST; echo "De waarden van de variabelen doorgegeven door de POST-methode zijn $name en $lastname";
Net als bij de GET-methode wijzen we eerst de waarden van de overeenkomstige elementen toe aan de variabelen mondiale reeksNA. Voor de duidelijkheid geven we deze variabelen vervolgens op het scherm weer met behulp van .
Wanneer we nu het eerste bestand laden, wordt het formulier geladen. Na het invoeren van de gegevens klikt u op de knop "Verzenden", waardoor een pagina met een tweede bestand wordt geopend op een nieuw tabblad, waarop de waarden worden weergegeven die in het formulier op de vorige pagina zijn geschreven. Dat wil zeggen dat de waarden van variabelen uit het eerste bestand worden overgebracht naar het tweede bestand.
Dit concludeert dit artikel over het doorgeven van variabelen in PHP. Als u de verschijning van andere artikelen op de blog niet wilt missen, raad ik u aan zich op een handige manier op de nieuwsbrief te abonneren in het gedeelte 'Abonnement' of via het onderstaande formulier.
Dat is alles. Veel succes en succes bij het beheersen van de basisprincipes van PHP.
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() en de volgende regel wordt als voorwaarde gebruikt:
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 identificatie 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 orde brengen...
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 een 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: