Js makakuha ng mga parameter mula sa isang string. PHP at GET at POST na mga paraan ng paglilipat ng data

Ang mga modernong mapagkukunan sa web ay hindi lamang nagbibigay ng impormasyon sa bisita, ngunit nakikipag-ugnayan din sa kanya. Upang makipag-ugnayan sa gumagamit, kailangan mong makatanggap ng ilang impormasyon mula sa kanya. Mayroong ilang mga paraan upang mabawi ang data, ang mga karaniwang pamamaraan ay GET at POST. At ayon dito, ang PHP ay may suporta para sa mga paraan ng paglilipat na ito KUMUHA ng data at POST. Tingnan natin kung paano gumagana ang mga pamamaraang ito.
Ang GET Method Data ay inililipat gamit ang GET method sa pamamagitan ng pagdaragdag nito sa URL ng isang script na tinatawag upang iproseso ang natanggap na impormasyon. Para sa paglilinaw ang pamamaraang ito i-dial in address bar URL ng browser sa mapagkukunan at magdagdag muna ng tandang pananong (?) at pagkatapos ay ang linyang num=10 . Halimbawa

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


Kung mayroon ka lokal na server pagkatapos ay karaniwang ang domain ay localhost at pagkatapos ay ang nakaraang entry ay magiging hitsura

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


Sa kasong ito ipinapasa namin ang parameter num na katumbas ng 10. Upang magdagdag sumusunod na mga parameter Kailangang gamitin ng script ang ampersand delimiter (&), halimbawa

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


SA sa kasong ito ipinasa namin ang tatlong parameter sa script: num na may halagang 10, i-type ang halagang "bago" at v na may halagang "teksto".
Upang makuha ang mga parameter na ito sa script, kailangan mong gamitin ang built-in na array $_GET $_GET["num"], $_GET["type"],$_GET["v"] . Ang mga elemento ng array na ito ay maglalaman ng mga halaga ng mga naipasa na parameter. Upang ipakita ang halimbawang ito, lumikha ng script.php file na may mga sumusunod na nilalaman



Pagpapatunay ng GET method sa PHP





At ngayon tawagan ang file na ito sa browser

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


at makikita mo ang mga naipasa na parameter sa window ng browser. Ngunit kung tatawagin mo ang file na ito nang wala karagdagang mga parameter http://path/script.php , makikita mo ang mga error na ibibigay nito PHP interpreter, na walang ganoong elemento ng $_GET array. Mahigit sa isang artikulo ang maaaring italaga sa pagsuri sa data na natanggap mula sa gumagamit, kaya sa artikulong ito ay hindi ko hawakan ang puntong ito.
Tulad ng malamang na nauunawaan mo, ang pagpilit sa gumagamit na mag-type ng data sa address bar ng browser ay hindi napakahusay at ganap na hindi maginhawa. Samakatuwid, upang makatanggap ng data mula sa user kailangan mong gumamit ng mga html form. Sumulat tayo ng isang simpleng html form.


Ipasok ang numero

Mayroon ka bang computer?
Oo
Hindi


Ang iyong komento:





Hayaan akong magkomento ng kaunti sa ginawang form. Ang mga form ay nilikha gamit ang tag ng form. Ang mga patlang ng form ay nilikha gamit ang input, piliin, mga tag ng textarea (maaari kang magbasa nang higit pa). Sa form na tag katangian ng pagkilos tumutukoy sa URL ng script na tatanggap ng data ng form. Sa aming kaso, tinukoy namin ang aming umiiral na script.php file. Tinutukoy ng attribute ng method ang paraan para sa pagpapadala ng data. Tinukoy namin ang paraan ng GET. Ngayon alam na natin kung saang file ililipat ang data ng form, at sa anong paraan, ang natitira na lang ay alamin kung saan ito hahanapin?!
Ang data ng form na ito ay ipapasa sa web resource ng browser sa pamamagitan ng pagdaragdag nito sa URL: unang magkakaroon ng tandang pananong (?), pagkatapos ay ipapakita ang mga parameter na pinaghihiwalay ng isang ampersand (&). Ang pangalan ng parameter ay kukunin mula sa attribute ng pangalan, na dapat na tukuyin para sa anumang field ng form. Ang halaga ng parameter ay depende sa uri ng field. Kung ang field ay text field, ang value ay ang text na ipinasok ng user. Kung ang field ay isang listahan, isang pangkat ng mga radio button o mga check box, ang value ng parameter ay ang value ng value attribute ng napiling elemento. Hayaan akong ipaliwanag gamit ang aming form bilang isang halimbawa. Kung ipinasok ng user ang numero 10 sa input field, ang pangalan ng parameter ay num (ang value ng name attribute ng input tag) at ang value ay 10 (ang numerong ipinasok ng user). Alinsunod dito, bubuo ang browser ng isang pares na "num=10". Kung pipiliin ng user ang opsyong "Oo" mula sa listahan, ang pangalan ng parameter ay magiging uri (ang value ng name attribute ng select tag) at ang value ay yes (ang value ng value attribute ng opsyon tag). Alinsunod dito, bubuo ang browser ng isang pares na “type=yes”.
Ngayon ay ilalagay natin ang form na ito sa forma.php page.



Form para sa pagpapadala ng data gamit ang GET at PHP na mga pamamaraan



Ipasok ang numero

Mayroon ka bang computer?
Oo
Hindi


Ang iyong komento:







Ipasok ang anumang mga halaga sa mga patlang ng form at i-click ang pindutang "Isumite". Pagkatapos ng pag-click sa pindutan, ang browser ay magbubukas ng isa pang pahina (script.php) at ang data na iyong ipinasok ay ipapakita sa window ng browser. Sa tingin ko ay malinaw kung bakit: ipapasa ng browser ang data sa script.php script, at sa script ang data na ito ay ipoproseso at ipapakita sa screen.
Paraan ng POST Ngayon tingnan natin kung paano gumagana ang paraan ng POST.
Para magpadala ng data gamit ang POST method, kailangan mong gumamit ng HTML forms. Tulad ng natatandaan namin, ang katangian ng pamamaraan ng tag ng form ay responsable para sa paraan ng pagpapadala ng data ng form. Samakatuwid, kailangan mong tukuyin sa katangian ng pamamaraan ng tag ng form halaga ng POST. Kung hindi, ang form ay maaaring kapareho ng para sa GET method. Baguhin natin ang ating form, na ginamit na natin sa pagpapadala ng data gamit ang GET method, upang i-transmit gamit ang POST method.


Ipasok ang numero

Mayroon ka bang computer?
Oo
Hindi


Ang iyong komento:





Tulad ng nakikita mo, ang form ay nananatiling pareho maliban sa mga katangian ng pamamaraan at pagkilos. Ipapasa na ngayon ang data sa script ng script_post.php. Ilagay natin ang ating form sa forma_post.php page.



Form para sa pagpapadala ng data gamit ang mga pamamaraan ng POST at PHP



Ipasok ang numero

Mayroon ka bang computer?
Oo
Hindi


Ang iyong komento:







Ngayon kailangan naming magsulat ng isang script na magpoproseso ng aming data ng form.
Upang makatanggap ng data mula sa POST method sa isang script, kailangan mong gamitin ang built-in na $_POST array. Ang mga susi ng array na ito ay ang mga pangalan ng mga parameter. Sa aming kaso, kailangan naming gamitin ang $_POST["num"], $_POST["type"],$_POST["v"] . Ang mga elemento ng array na ito ay maglalaman ng mga halaga ng inilipat na data. Tulad ng nakikita mo, ang pagkakaiba mula sa paggamit ng GET method ay ipinahayag lamang sa paggamit ng $_POST array. Samakatuwid, hindi magiging mahirap para sa amin na isulat ang script_post.php file:



Pagsusulit Paraan ng POST sa PHP





Ngayon buksan ang forma_post.php file sa iyong browser. Magpasok ng ilang data sa mga patlang ng form at i-click ang pindutang "Isumite". Ngayon, malamang na napansin mo ang pagkakaiba sa pagitan ng POST method at GET method - hindi lumabas ang form data sa address bar ng browser. Hindi maipapadala ang data gamit ang POST method sa pamamagitan ng browser address bar. Ito ay isang makabuluhang pagkakaiba na dapat tandaan.
Sa PHP, hindi alintana kung paano ipinadala ang data - ang pamamaraan ng POST o ang pamamaraan ng GET - maaari mong makuha ang data gamit ang hanay ng $_REQUEST Paghahambing ng mga pamamaraan ng GET at POST Kapag ginagamit ang pamamaraang GET, inililipat ang data sa pamamagitan ng pagdaragdag sa URL. Kaya, makikita sila ng gumagamit, na hindi palaging maganda mula sa isang punto ng seguridad. Gayundin, ang maximum na halaga ng data na inilipat ay depende sa browser - sa maximum na pinapayagang bilang ng mga character sa address bar ng browser.
Kapag ginagamit ang paraan ng POST, hindi makikita ng user ang data (hindi ipinapakita sa address bar ng browser). At samakatuwid sila ay mas ligtas, at, dahil dito, ang programa sa pagpoproseso ng data na ito ay mas protektado sa mga tuntunin ng seguridad. Gayundin, ang dami ng ipinadalang data ay halos walang limitasyon.
Kapag pumipili ng paraan ng paglilipat ng data, kailangan mong isaalang-alang ang mga tampok sa itaas at piliin ang pinakaangkop na paraan.

Sa halos bawat site maaari kang makakita ng mga link na naglalaman ng mga parameter pagkatapos ng "?" Karaniwang pinangangasiwaan ng script ng server ang pagpoproseso ng mga naturang parameter, ngunit kung minsan ay kailangang malaman ang mga parameter na ito sa loob ng JavaScript. Sasabihin sa iyo ng kuwento ngayon kung paano ito gagawin.

Ano ang tinatawag na GET parameters? Sa katunayan, ito ay isang string ng address lamang, ngunit karaniwan na kung ang isang karakter na "?" ay matatagpuan sa isang URL, kung gayon ang lahat ng mga character pagkatapos nito ay mga parameter. Ang interpretasyon ng mga parameter ay pamantayan: una ay ang variable na pangalan, pagkatapos ay ang "=" simbolo, pagkatapos ay ang variable na halaga, ang mga variable ay pinaghihiwalay ng "&" simbolo. Maaari mong malaman ang kasalukuyang address sa JavaScript sa pamamagitan ng pagbabasa ng halaga ng window.location. I-parse ang linya pagkatapos ng "?" kailangan mong gawin ito sa dalawang pass: unang hatiin ito sa mga pangkat na "variable=value", at pagkatapos ay hatiin ito sa mga bahaging bahagi nito.

Ang paghahati ng string ng parameter ay ginagawang mas madali sa pamamagitan ng katotohanan na ang JavaScript ay may espesyal na function ng string - split(), na ang resulta ay isang hanay ng mga string. Upang magamit ito, kailangan mo munang lumikha ng isang String object, dahil function na ito ay isang paraan ng bagay na ito. Ginagawa ito nang simple:

someVar = new String("some text");

Pagkatapos ay hinati namin ang string sa mga substring:

someArray = someVar.split("x");

Kung saan ang "x" ay ang simbolo para sa paghahati ng isang string sa mga substring. Upang makahanap ng isang character sa isang string, kailangan mong gumamit ng isa pa string function- indexOf():

someVar.indexOf("?");

Nakumpleto ang pagpapakilala sa teorya. Simulan na natin ang pagsasanay. Ako ay nagpasya na ang lahat ng GET variable ay dapat na naka-imbak sa dalawang magkahiwalay mga pandaigdigang array: ang isa ay nag-iimbak ng mga pangalan, ang isa ay nag-iimbak ng mga halaga. Sa kasamaang palad, hindi suportado ang JavaScript associative arrays, kaya gamitin natin ang paraang ipinahiwatig ko. Kinakailangan din na i-save ang bilang ng mga variable ng GET. Siyempre, maaari mong palaging tawagan ang function upang kalkulahin ang laki ng array, ngunit stylistically ang aking pamamaraan ay mas mahusay. At kaya, ang mga pandaigdigang variable at array:

var_GET_Keys; // Sa ngayon ay isang walang laman na array var _GET_Values; var_GET_Count = 0; // wala pang elemento var _GET_Default = ""

Ang kahulugan ng _GET_Default na variable ay ipapaliwanag sa ibang pagkakataon. Susunod, gagawa ako ng get_parseGET() function na mag-parse ng mga URL at gagawa ng mga array na may mga variable. Sa pinakadulo simula, ang function ay lumilikha ng isang String object at sinusuri ang pagkakaroon ng "?"

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

Ngayon, hinahati namin ang linya sa mga pangkat na "variable=value", kalkulahin ang kabuuang bilang ng mga variable at naghahanda upang lumikha ng mga kinakailangang array:

l = get.split("&"); x = 0; _GET_Count = l.haba; _GET_Keys = bagong Array(_GET_Count); _GET_Values ​​​​= bagong Array(_GET_Count);

At sa wakas, hinahati namin ang mga resultang grupo sa dalawang array na may mga pangalan ng mga variable at ang kanilang mga halaga:

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

SA sa halimbawang ito ang para sa .. sa konstruksiyon ay ginagamit, na umuulit sa lahat ng mga elemento ng array. Ang syntax ng construction na ito ay:

para sa (key in array) ( // Iyong mga aksyon )

kung saan ang key ay ang pangalan ng key na pipiliin array. Sa katawan ng loop, ang kasalukuyang elemento ay maaaring ma-access sa pamamagitan ng array.

Ang pangalawang function mula sa library, get_fetchVar(key), ay nagbibigay-daan sa iyo upang malaman ang halaga ng isang ibinigay na variable ng GET. Gumagana ito sa pamamagitan lamang ng pag-ulit sa pamamagitan ng _GET_Keys array. Kung hindi natagpuan ang susi, ibinabalik nito ang _GET_Default na halaga, na binanggit sa itaas. Gusto kong tandaan na ang _GET_Default na halaga ay HINDI kailangang baguhin sa library mismo - kung kinakailangan, ito ay maaaring gawin sa iyong HTML code:

_GET_Default="tra la la";

Sa pinakadulo ng script mayroong isang tawag upang get_parseGET(); at dito nagtatapos ang library.

Mabuti Masama

    Sa halos bawat site maaari kang makakita ng mga link na naglalaman ng mga parameter pagkatapos ng "?" Karaniwan, ang pagproseso ng mga naturang parameter...

    Mayroong ilang mga paraan upang alisin ang isang elemento ng array sa JavaScript. Kabilang dito ang mga paraan ng pop at shift. paraan ng pop inaalis ang unang elemento mula sa ibinigay na array. paraan ng paglilipat tinatanggal...

Ngayon sasabihin ko sa iyo kung paano, gamit ang js, madali at simpleng mamanipula natin ang URL sa browser nang hindi nire-reload ang page. Para dito gagamitin natin susunod na function: history.pushState(). Ito ay nagkakahalaga ng pagbibigay pansin sa katotohanan na ito ay gumagana lamang sa mga browser na sinusuportahan ng html5! Mayroon itong 3 mga parameter kung saan wala tayong maipapasa, i.e.:

History.pushState("","","");

Sa una sa mga pamamaraan, ipinapasa namin ang estado ng bagay. Ang pangalawa ay walang iba kundi ang Pangalan (nga pala, ngayon ay hindi ito pinapansin...). At ang pangatlong parameter ay ang URL mismo.

Sa artikulong ito ay isasaalang-alang lamang natin ang pangatlo.

Sa parameter ng URL, kailangan lang naming magpasa ng string na papalitan sa URL mula sa ugat ng site.

Magdagdag tayo ng URL

Ang aming URL mismo ay marahil ang pinakasimpleng: http://localhost/

Var newUrl = "/catalog/?login=myLogin&page=phone";

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

Pagkatapos isagawa ang script na ito, makikita mo sa address bar: localhost/catalog/?login=myLogin&page=phone

Ngunit mag-ingat. Dahil nagbago ang aming URL. Pagkatapos, kapag na-click mo ang i-refresh ang pahina, susubukan ng browser na pumunta sa bagong URL. At kung walang seksyong /catalog/ ang iyong site, makakakita ka ng 404 error.

Baguhin natin ang kasalukuyang URL

Var arUrl = window.location.pathname.split("/");

var newUrl = "/bazar/"+arUrl+"/"+window.location.search;
history.pushState("", "", newUrl);
Linya 1: Kunin ang path na nauugnay sa host at gamitin ang split para hatiin ito sa isang array

Linya 2: Gumawa kami ng bagong URL na binubuo ng salitang "bazar" + ang pangalawang key ng aming array, na naglalaman ng salitang samsung, at sa dulo ay idinagdag namin ang aming get

Line 3: Actually yung kapalit mismo.

Pagkatapos isagawa ang script na ito, makikita mo sa address bar: localhost/bazar/samsung/?login=myLogin&page=phone

Pagbabago ng mga parameter ng GET

Tingnan natin ang parehong halimbawa. Var arUrl = window.location.search.split("&"); arUrl = arUrl.slice(1); var arr=; $.each(arUrl,function(i,elem)( arr[i] = elem.split("="); )); var newUrl = arr+"="+arr+"&"+arr+"="+arr; newUrl = window.location.pathname+"?"+newUrl; history.pushState("", "", newUrl); Syempre

  • ang script na ito
  • ay isang pagpapakita at marahil ang pinakasimple. Pagkatapos ng pagpapatupad nito, ang mga halaga ng mga parameter ng GET ay ipapalit sa address bar ng browser. Ang ?login=myLogin&page=phone ay magiging ?login=phone&page=myLogin. Well, ngayon, sa pagkakasunud-sunod.
  • linya: Kumuha kami ng hanay ng mga split GET na parameter gamit ang & simbolo
  • linya: Dahil ang window.location.searche ay nagbabalik ng mga parameter kasama ang separator - ?, inaalis namin ito.
  • linya: Gumawa ng array
  • linya: Dumaan tayo sa aming array linya: Hatiin ang halaga ng mga susi. linya: Pagkolekta
    bagong linya
  • may mga parameter.
  • Siyempre, ang puntong ito ay maaaring gawin nang iba, ngunit sa loob ng balangkas ng aralin ay gagawin natin ito sa pinakasimpleng paraan.
  • linya: Pagkolekta ng bagong URL
    line replace url

    Pagkatapos isagawa ang script, ang aming lumang URL: localhost/catalog/samsung/?login=myLogin&page=phone