JavaScript haalt parameters op. PHP- en GET- en POST-methoden voor gegevensoverdracht

Moderne webbronnen bieden niet alleen informatie aan de bezoeker, maar communiceren ook met hem. Om met de gebruiker te communiceren, moet u wat informatie van hem ontvangen. Er zijn verschillende methoden om gegevens op te halen, veelgebruikte methoden zijn GET en POST. En dienovereenkomstig biedt PHP ondersteuning voor deze overdrachtsmethoden KRIJG gegevens en POST. Laten we eens kijken hoe deze methoden werken.
GET-methode Gegevens worden overgedragen met behulp van de GET-methode door deze toe te voegen aan de URL van een script dat wordt aangeroepen om de ontvangen informatie te verwerken. Ter verduidelijking deze methode inbellen adresbalk browser-URL van de bron en voeg eerst een vraagteken (?) toe en vervolgens de regel num=10 . Bijvoorbeeld

http://domein.ru/script.php?num=10


Als je dat hebt lokale server, dan is het domein meestal localhost , en dan vorige invoer eruit zal zien

http://localhost/script.php?num=10


In dit geval geven we de parameter num door die gelijk is aan 10. Optellen volgende parameters Het script moet bijvoorbeeld het ampersand-scheidingsteken (&) gebruiken

http://domein.ru/script.php?num=10&type=new&v=text


IN in dit geval we hebben drie parameters aan het script doorgegeven: num met de waarde 10, type met de waarde "new" en v met de waarde "text".
Om deze parameters in het script te krijgen, moet je de ingebouwde array $_GET $_GET["num"], $_GET["type"],$_GET["v"] gebruiken. Deze array-elementen bevatten de waarden van de doorgegeven parameters. Om dit voorbeeld te demonstreren, maakt u een script.php-bestand met de volgende inhoud



Inspectie GET-methode in PHP





En roep dit bestand nu in de browser

http://pad/script.php?num=10&type=new&v=text


en u ziet de doorgegeven parameters in het browservenster. Maar als je dit bestand zonder aanvullende parameters http://path/script.php , zul je fouten zien die de PHP-interpreter zal produceren, waarin staat dat dergelijke elementen niet voorkomen in de $_GET-array. Er zou meer dan één artikel kunnen worden gewijd aan het controleren van de gegevens die van de gebruiker zijn ontvangen, dus in dit artikel zal ik dit punt niet bespreken.
Zoals u waarschijnlijk begrijpt, is het dwingen van de gebruiker om gegevens in de adresbalk van de browser te typen niet erg goed en volkomen onhandig. Om gegevens van de gebruiker te ontvangen, moet u daarom HTML-formulieren gebruiken. Laten we een eenvoudig HTML-formulier schrijven.


Voer nummer in

Heeft u een computer?
Ja
Nee


Jouw commentaar:





Laat me een beetje commentaar geven op het gemaakte formulier. Formulieren worden gemaakt met de form-tag. Formuliervelden worden gemaakt met behulp van de tags input, select en textarea (je kunt meer lezen). In de formuliertag specificeert het action-attribuut de URL van het script dat de formuliergegevens zal ontvangen. In ons geval hebben we ons bestaande script.php-bestand gespecificeerd. Het method-attribuut specificeert de methode voor het verzenden van gegevens. We hebben de GET-methode gespecificeerd. Nu weten we naar welk bestand de formuliergegevens zullen worden overgebracht, en op welke manier, het enige dat overblijft is uitzoeken waar we ernaar moeten zoeken?!
Deze formuliergegevens worden door de browser aan de webbron doorgegeven door deze aan de URL toe te voegen: eerst zal er een vraagteken (?) staan, daarna worden de parameters gescheiden door een ampersand (&) weergegeven. De naam van de parameter wordt overgenomen uit het naamattribuut, dat voor elk formulierveld moet worden opgegeven. De waarde van de parameter is afhankelijk van het veldtype. Als het veld een tekstveld is, is de waarde de tekst die door de gebruiker is ingevoerd. Als het veld een lijst, een groep keuzerondjes of selectievakjes is, dan is de waarde van de parameter de waarde van het waardeattribuut van het geselecteerde element. Ik zal het uitleggen aan de hand van ons formulier als voorbeeld. Als de gebruiker het getal 10 in het invoerveld invoert, is de naam van de parameter num (de waarde van het naamattribuut van de invoertag) en de waarde 10 (het getal dat door de gebruiker is ingevoerd). Dienovereenkomstig zal de browser een paar "num=10" genereren. Als de gebruiker de optie "Ja" uit de lijst selecteert, zal de naam van de parameter type zijn (de waarde van het naamattribuut van de select-tag) en de waarde ja (de waarde van het waardeattribuut van de optie label). Dienovereenkomstig zal de browser een “type=yes”-paar genereren.
Nu plaatsen we dit formulier op de forma.php pagina.



Formulier voor het verzenden van gegevens met behulp van GET- en PHP-methoden



Voer nummer in

Heeft u een computer?
Ja
Nee


Jouw commentaar:







Voer eventuele waarden in de formuliervelden in en klik op de knop "Verzenden". Nadat u op de knop heeft geklikt, opent de browser een andere pagina (script.php) en worden de door u ingevoerde gegevens in het browservenster weergegeven. Ik denk dat het duidelijk is waarom: de browser geeft de gegevens door aan het script.php-script, en in het script worden deze gegevens verwerkt en op het scherm weergegeven.
POST-methode Laten we nu eens kijken hoe de POST-methode werkt.
Om gegevens te verzenden via de POST-methode, moet u HTML-formulieren gebruiken. Zoals we ons herinneren, is het method-attribuut verantwoordelijk voor de methode voor het verzenden van formuliergegevens formulier-tag. Daarom moet u de waarde POST opgeven in het method-attribuut van de form-tag. Anders kan het formulier hetzelfde zijn als voor de GET-methode. Laten we onze vorm, die we al hebben gebruikt om gegevens te verzenden met behulp van de GET-methode, veranderen in verzending met behulp van de POST-methode.


Voer nummer in

Heeft u een computer?
Ja
Nee


Jouw commentaar:





Zoals u kunt zien, blijft de vorm hetzelfde, behalve de kenmerken methode en actie. De gegevens worden nu doorgegeven aan het script script_post.php. Laten we ons formulier op de forma_post.php pagina plaatsen.



Formulier voor het verzenden van gegevens met behulp van POST- en PHP-methoden



Voer nummer in

Heeft u een computer?
Ja
Nee


Jouw commentaar:







Nu moeten we een script schrijven dat onze formuliergegevens verwerkt.
Om gegevens van de POST-methode in een script te ontvangen, moet u de ingebouwde $_POST-array gebruiken. De sleutels van deze array zijn de namen van de parameters. In ons geval moeten we $_POST["num"], $_POST["type"],$_POST["v"] gebruiken. Deze array-elementen bevatten de waarden van de overgedragen gegevens. Zoals je kunt zien, komt het verschil met het gebruik van de GET-methode alleen tot uiting in het gebruik van de $_POST-array. Daarom zal het voor ons niet moeilijk zijn om het script_post.php-bestand te schrijven:



Inspectie POST-methode in PHP





Open nu het forma_post.php bestand in uw browser. Voer enkele gegevens in de formuliervelden in en klik op de knop "Verzenden". Nu heb je waarschijnlijk het verschil opgemerkt tussen de POST-methode en de GET-methode: de formuliergegevens verschenen niet in de adresbalk van de browser. Gegevens kunnen niet worden verzonden met de POST-methode via de adresbalk van de browser. Dit is een aanzienlijk verschil om te onthouden.
In PHP kun je, ongeacht hoe de gegevens zijn verzonden - de POST-methode of de GET-methode - de gegevens ophalen met behulp van de $_REQUEST-array. Vergelijking van de GET- en POST-methoden. Bij gebruik van de GET-methode worden gegevens overgedragen door ze toe te voegen aan de URL. Ze zullen dus zichtbaar zijn voor de gebruiker, wat vanuit veiligheidsoogpunt niet altijd goed is. Bovendien is de maximale hoeveelheid overgedragen gegevens afhankelijk van de browser - van het maximaal toegestane aantal tekens in de adresbalk van de browser.
Bij gebruik van de POST-methode zijn de gegevens niet zichtbaar voor de gebruiker (niet weergegeven in de adresbalk van de browser). En daarom zijn ze veiliger, en bijgevolg is het programma dat deze gegevens verwerkt, beter beschermd in termen van beveiliging. Bovendien is het volume van de verzonden gegevens vrijwel onbeperkt.
Wanneer u een methode voor gegevensoverdracht kiest, moet u rekening houden met de bovenstaande kenmerken en de meest geschikte methode kiezen.

Nu zal ik je vertellen hoe we met js eenvoudig en eenvoudig de URL in de browser kunnen manipuleren zonder de pagina opnieuw te laden. Hiervoor zullen we gebruiken volgende functie: geschiedenis.pushState(). Het is de moeite waard om op te letten dat het alleen werkt met browsers die html5 ondersteunen! Het heeft 3 parameters waarin we in wezen niets kunnen doorgeven, namelijk:

Geschiedenis.pushState("","","");

In de eerste van de methoden geven we de toestand van het object door. De tweede is niets meer dan de Naam (die trouwens vandaag de dag wordt genegeerd...). En de derde parameter is de URL zelf.

In dit artikel zullen we alleen de derde beschouwen.

In de URL-parameter hoeven we alleen maar een tekenreeks door te geven die wordt vervangen in de URL vanaf de hoofdmap van de site.

Laten we een URL toevoegen

Onze URL zelf zal waarschijnlijk de eenvoudigste zijn: http://localhost/

Var newUrl = "/catalog/?login=mijnLogin&page=telefoon";

history.pushState("", "", newUrl);

Na het uitvoeren van dit script ziet u in de adresbalk: localhost/catalog/?login=myLogin&page=phone

Maar wees voorzichtig. Omdat onze URL is veranderd. Wanneer u vervolgens op de pagina vernieuwen klikt, probeert de browser naar de nieuwe URL te gaan. En als uw site geen /catalog/-sectie heeft, ziet u een 404-foutmelding.

Laten we de bestaande URL wijzigen

Het tweede voorbeeld komt hier: localhost/catalog/samsung/?login=myLogin&page=phone

Var arUrl = venster.locatie.padnaam.split("/");
var newUrl = "/bazar/"+arUrl+"/"+window.location.search;
history.pushState("", "", newUrl);

Regel 1: Haal het pad op ten opzichte van de host en gebruik split om het in een array te splitsen

Regel 2: We creëren een nieuwe URL bestaande uit het woord “bazar” + de tweede sleutel van onze array, die het woord samsung bevat, en aan het einde hebben we onze get toegevoegd

Regel 3: Eigenlijk de vervanging zelf.

Na het uitvoeren van dit script ziet u in de adresbalk: localhost/bazar/samsung/?login=myLogin&page=phone

GET-parameters wijzigen Laten we naar hetzelfde voorbeeld kijken. Var arUrl = venster.locatie.search.split("&"); arUrl = arUrl.slice(1); var arr=; $.each(arUrl,function(i,elem)( arr[i] = elem.split("); )); var newUrl = arr+"="+arr+"&"+arr+"="+arr; nieuweUrl = venster.locatie.padnaam+"?"+nieuweUrl; history.pushState("", "", newUrl);

  • Natuurlijk
  • dit script
  • is een demonstratie en waarschijnlijk de eenvoudigste. Na de uitvoering worden de waarden van de GET-parameters verwisseld in de adresbalk van de browser. ?login=myLogin&page=telefoon verandert in ?login=phone&page=myLogin. Nou, in orde.
  • line: We krijgen een array van gesplitste GET-parameters met behulp van het &-symbool
  • line: Omdat window.location.searche parameters retourneert samen met het scheidingsteken - ?, verwijderen we dit.
  • lijn: Maak een array line: Laten we onze array doornemen lijn: Verdeel de waarde van de sleutels.
    lijn: verzamelen nieuwe lijn met parameters.
  • Zeker
  • dit artikel
  • Na het uitvoeren van het script, onze oude URL: localhost/catalog/samsung/?login=myLogin&page=phone
    wordt vervangen door een nieuwe: localhost/catalog/samsung/?login=phone&page=myLogin

    Eigenlijk is dat alles wat ik je vandaag wilde vertellen. Laat uw opmerkingen achter en vergeet niet dit bericht op sociale netwerken te delen.

    Op bijna elke site ziet u links met parameters na het "?"-teken, bijvoorbeeld http://some.site.com/?id=1. Normaal gesproken zorgt een serverscript voor de verwerking van dergelijke parameters, maar soms is het nodig om deze parameters in JavaScript te achterhalen. Het verhaal van vandaag vertelt je hoe je dit kunt doen.

    Wat zijn de zogenaamde GET-parameters? In feite is dit slechts een adresreeks, maar het is gebruikelijk dat als er een “?”-teken in een URL wordt gevonden, alle tekens erna parameters zijn. De interpretatie van parameters is standaard: eerst komt de naam van de variabele, dan het symbool “=, dan de waarde van de variabele. De variabelen worden gescheiden door het symbool “&”. U kunt het huidige adres in JavaScript achterhalen door de waarde van window.location te lezen. Parseer de regel na "?" je zult het in twee stappen moeten doen: eerst het opdelen in “variabele=waarde”-groepen, en dan het opdelen in de samenstellende delen.

    Het splitsen van een parameterstring wordt gemakkelijker gemaakt door het feit dat JavaScript een speciale stringfunctie heeft: split(), waarvan het resultaat een array van strings zal zijn. Om het te kunnen gebruiken, moet je eerst een String-object maken, aangezien deze functie is een methode van dit object. Dit gebeurt eenvoudig:

    someVar = new String("een stukje tekst");

    Vervolgens verdelen we de string in substrings:

    sommigeArray = sommigeVar.split("x");

    Waarbij "x" het symbool is voor het verdelen van een string in substrings. Om een ​​teken in een string te vinden, moet je een ander teken gebruiken string-functie- indexVan():

    eenVar.indexOf("?");

    De inleiding tot de theorie is voltooid. Laten we beginnen met oefenen. Ik besloot dat alle GET-variabelen in twee afzonderlijke globale arrays moesten worden opgeslagen: de ene slaat de namen op, de andere slaat de waarden op. Helaas wordt JavaScript niet ondersteund associatieve arrays, dus laten we de methode gebruiken die ik heb aangegeven. Het is ook noodzakelijk om het aantal GET-variabelen op te slaan. Natuurlijk kun je de functie altijd aanroepen om de grootte van de array te berekenen, maar stilistisch gezien is mijn methode beter. En dus, globale variabelen en arrays:

    var_GET_Keys; // Voorlopig een lege array var _GET_Values; var_GET_Count = 0; // nog geen elementen var _GET_Default = ""

    De betekenis van de variabele _GET_Default zal later worden uitgelegd. Vervolgens maak ik een get_parseGET()-functie die URL's parseert en arrays met variabelen maakt. Helemaal aan het begin maakt de functie een String-object en controleert op de aanwezigheid van het teken "?"

    l = get.lengte; get = get.substr(x+1, l-x);

    Nu verdelen we de regel in “variabele=waarde”-groepen, berekenen het totale aantal variabelen en bereiden we voor op het maken van de benodigde arrays:

    l = get.split("&"); x = 0; _GET_Count = l.lengte; _GET_Keys = nieuwe array(_GET_Count); _GET_Values ​​= nieuwe array(_GET_Count);

    En ten slotte verdelen we de resulterende groepen in twee arrays met de namen van de variabelen en hun waarden:

    for(i in l) ( get = l[i].split("="); _GET_Keys[x] = get; _GET_Values[x] = get; x++; )

    IN in dit voorbeeld de for .. in constructie wordt gebruikt, die door alle elementen van de array loopt. De syntaxis van deze constructie is:

    for (toets array in) ( // Jouw acties )

    waarbij sleutel de naam is van de sleutel waaruit wordt geselecteerd reeks. In de body van de lus is het huidige element toegankelijk via een array.

    Met de tweede functie uit de bibliotheek, get_fetchVar(key), kunt u de waarde van een bepaalde GET-variabele achterhalen. Het werkt door simpelweg de _GET_Keys array te doorlopen. Als de sleutel niet wordt gevonden, retourneert deze de waarde _GET_Default, die hierboven werd vermeld. Ik zou willen opmerken dat de waarde _GET_Default NIET in de bibliotheek zelf hoeft te worden gewijzigd - indien nodig kan dit in uw HTML-code worden gedaan:

    _GET_Default="tra la la";

    Helemaal aan het einde van het script is er een oproep naar get_parseGET(); en dit is waar de bibliotheek eindigt.

    Goed slecht

      Op bijna elke site ziet u links met parameters na het "?"-teken, bijvoorbeeld http://some.site.com/?id=1. Meestal verwerken dergelijke parameters...

      Er zijn verschillende methoden om een ​​array-element in JavaScript te verwijderen. Deze omvatten de pop- en shift-methoden. De pop-methode verwijdert het eerste element uit gegeven array. De shift-methode verwijdert...