PHP: POST at GET na mga kahilingan para sa mga nagsisimula. Paano magpadala ng kahilingan sa pag-post mula sa isang browser: paraan ng pag-post

Ang post na ito ay isang sagot sa isang tanong na itinanong sa isang komento sa isa sa aking mga artikulo.

Sa artikulong ito gusto kong sabihin sa iyo kung ano ang mga pamamaraan ng HTTP na GET/POST/PUT/DELETE at iba pa, kung bakit sila naimbento at kung paano gamitin ang mga ito alinsunod sa REST.

HTTP

Kaya, ano ang isa sa mga pangunahing protocol ng Internet? Ipapadala ko ang mga pedants sa RFC2616, at sasabihin ko sa iba ang tao :)

Inilalarawan ng protocol na ito ang pakikipag-ugnayan sa pagitan ng dalawang computer (client at server), na binuo batay sa mga mensaheng tinatawag na kahilingan (Request) at tugon (Response). Ang bawat mensahe ay binubuo ng tatlong bahagi: isang panimulang linya, mga header at isang katawan. Sa kasong ito, ang panimulang linya lamang ang kinakailangan.

Ang mga panimulang linya para sa kahilingan at tugon ay may iba't ibang mga format - interesado lang kami sa panimulang linya ng kahilingan, na ganito ang hitsura:

PARAAN URI HTTP/ VERSION ,

Kung saan ang METHOD ay ang HTTP request method, ang URI ay ang resource identifier, ang VERSION ay ang protocol na bersyon (kasalukuyang bersyon 1.1 ay kasalukuyang).

Ang mga header ay isang koleksyon ng mga pares ng name-value na pinaghihiwalay ng colon. Ang mga header ay naghahatid ng iba't ibang impormasyon ng serbisyo: pag-encode ng mensahe, pangalan at bersyon ng browser, address kung saan nanggaling ang kliyente (Referrer), at iba pa.

Ang katawan ng mensahe ay ang aktwal na data na ipinapadala. Sa tugon, ang ipinadalang data ay karaniwang ang HTML na pahina na hiniling ng browser, at sa kahilingan, halimbawa, sa katawan ng mensahe, ang mga nilalaman ng mga file na na-upload sa server ay ipinadala. Ngunit bilang panuntunan, walang katawan ng mensahe sa kahilingan.

Halimbawa ng Pakikipag-ugnayan sa HTTP

Tingnan natin ang isang halimbawa.

Kahilingan:
GET /index.php HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Tuko/2008050509 Firefox/3.0b5 Tanggapin: text/html Koneksyon: isara
Ang unang linya ay ang linya ng query, ang natitira ay mga header; nawawala ang katawan ng mensahe

Sagot:
HTTP/1.0 200 OK Server: nginx/0.6.31 Content-Wika: ru Content-Type: text/html; charset=utf-8 Content-Length: 1234 Connection: isara ... ANG HTML PAGE MISMO...

Mga Mapagkukunan at Pamamaraan

Bumalik tayo sa panimulang linya ng kahilingan at tandaan na naglalaman ito ng isang parameter bilang URI. Ito ay kumakatawan sa Uniform Resource Identifier - isang pare-parehong resource identifier. Ang isang mapagkukunan ay, bilang isang panuntunan, isang file sa server (isang halimbawa ng URI sa kasong ito ay "/styles.css"), ngunit sa pangkalahatan ang isang mapagkukunan ay maaari ding ilang abstract na bagay ("/blogs/webdev/" - mga puntos sa "Web" block development" sa halip na sa isang partikular na file).

Ang uri ng kahilingan sa HTTP (tinatawag ding pamamaraan ng HTTP) ay nagsasabi sa server kung anong aksyon ang gusto naming gawin sa mapagkukunan. Sa una (sa unang bahagi ng 90s) ay ipinapalagay na ang kliyente ay maaaring gusto lamang ng isang bagay mula sa isang mapagkukunan - upang matanggap ito, ngunit ngayon gamit ang HTTP protocol maaari kang lumikha ng mga post, mag-edit ng isang profile, magtanggal ng mga mensahe at marami pa. At ang mga pagkilos na ito ay mahirap pagsamahin sa terminong "resibo".

Upang ibahin ang mga pagkilos mula sa mga mapagkukunan sa antas ng mga pamamaraan ng HTTP, naimbento ang mga sumusunod na opsyon:

  • GET - pagkuha ng mapagkukunan
  • POST - paglikha ng mapagkukunan
  • PUT - pag-update ng mapagkukunan
  • DELETE - pagtanggal ng mapagkukunan
Pakitandaan na ang pagtutukoy ng HTTP ay hindi nangangailangan ng server na maunawaan ang lahat ng mga pamamaraan (kung saan mayroong aktwal na higit sa 4) - GET lamang ang kinakailangan, at hindi rin sinasabi sa server kung ano ang dapat nitong gawin kapag tumatanggap ng isang kahilingan na may partikular na paraan. Nangangahulugan ito na ang server bilang tugon sa DELETE /index.php HTTP/1.1 na kahilingan hindi obligado tanggalin ang index.php page sa server, katulad ng para sa GET /index.php HTTP/1.1 request hindi obligado ibalik ang index.php page sa iyo, maaari itong tanggalin halimbawa :)

Papasok ang REST

Ang REST (Representational State Transfer) ay isang terminong ipinakilala noong 2000 ni Roy Fielding, isa sa mga developer ng HTTP protocol, bilang pangalan ng isang pangkat ng mga prinsipyo para sa pagbuo ng mga web application. Sa pangkalahatan, ang REST ay sumasaklaw sa isang mas malawak na lugar kaysa sa HTTP - maaari rin itong magamit sa ibang mga network na may iba pang mga protocol. Inilalarawan ng REST ang mga prinsipyo ng pakikipag-ugnayan sa pagitan ng kliyente at server, batay sa mga konsepto ng "resource" at "verb" (maaaring maunawaan bilang paksa at panaguri). Sa kaso ng HTTP, ang mapagkukunan ay tinutukoy ng URI nito, at ang pandiwa ay ang pamamaraang HTTP.

Iminumungkahi ng REST na iwanan ang paggamit ng parehong URI para sa iba't ibang mapagkukunan (iyon ay, ang mga address ng dalawang magkaibang artikulo tulad ng /index.php?article_id=10 at /index.php?article_id=20 - hindi ito isang REST-way) at gamit ang iba't ibang pamamaraan ng HTTP para sa iba't ibang pagkilos. Iyon ay, ang isang web application na nakasulat gamit ang REST na diskarte ay magtatanggal ng isang mapagkukunan kapag na-access ito gamit ang pamamaraang HTTP DELETE (siyempre, hindi ito nangangahulugan na kinakailangan upang bigyan ng pagkakataon na tanggalin ang lahat at lahat, ngunit anuman ang kahilingan sa pagtanggal ng application ay dapat gumamit ng pamamaraang HTTP DELETE).

Ang REST ay nagbibigay ng kakayahan sa mga programmer na magsulat ng mga standardized at bahagyang mas magandang mga web application kaysa dati. Gamit ang REST, ang URI upang magdagdag ng bagong user ay hindi magiging /user.php?action=create (GET/POST method), ngunit simpleng /user.php (strictly POST method).

Bilang resulta, sa pamamagitan ng pagsasama-sama ng umiiral na detalye ng HTTP at ang REST na diskarte, sa wakas ay may katuturan ang iba't ibang pamamaraan ng HTTP. GET - nagbabalik ng mapagkukunan, POST - lumilikha ng bago, PUT - nag-a-update ng umiiral na, DELETE - tinatanggal ito.

Problema?

Oo, may maliit na problema sa paggamit ng REST sa pagsasanay. Ang problemang ito ay tinatawag na HTML.

Ang mga kahilingan sa PUT/DELETE ay maaaring ipadala gamit ang XMLHttpRequest, sa pamamagitan ng manu-manong pakikipag-ugnayan sa server (sabihin, sa pamamagitan ng curl o kahit sa pamamagitan ng telnet), ngunit hindi ka makakagawa ng HTML form na nagpapadala ng ganap na kahilingan sa PUT/DELETE.

Ang bagay ay, ang HTML na detalye ay hindi nagpapahintulot sa iyo na lumikha ng mga form na nagsusumite ng data maliban sa pamamagitan ng GET o POST. Samakatuwid, upang gumana nang normal sa iba pang mga pamamaraan, kailangan mong tularan ang mga ito nang artipisyal. Halimbawa, sa Rack (ang mekanismo kung saan nakikipag-ugnayan si Ruby sa web server; ang Rails, Merb at iba pang Ruby frameworks ay ginawa gamit ang Rack), maaari kang magdagdag ng nakatagong field sa form na may pangalang "_method", at tukuyin ang pangalan ng pamamaraan bilang ang halaga (hal. "PUT") - sa kasong ito, isang POST na kahilingan ang ipapadala, ngunit ang Rack ay magagawang magpanggap na nakatanggap ito ng PUT sa halip na isang POST.

Ang GET at POST na pamamaraan sa HTTP at HTTPS ay ang dalawang pinakasikat na paraan na ginagamit upang maglipat ng data mula sa kliyente patungo sa server gamit ang HTTP (HyperText Transfer Protocol). Parehong maaaring gamitin ang GET at POST upang magpadala ng kahilingan at makatanggap ng tugon, ngunit may mga makabuluhang pagkakaiba sa pagitan nila.

Ang pagkakaiba sa pagitan ng GET at POST na mga kahilingan sa HTTP o HTTPS ay isang tanyag na tanong sa bawat panayam sa web programming. Dahil ang HTML ay independiyente sa teknolohiya ng web server tulad ng Java, ASP o PHP at ang HTTP ang pangunahing protocol sa espasyo ng Internet, ang kahalagahan ng pag-unawa sa mga pamamaraan ng GET at POST ay hindi maaaring malinaw na balewalain. Sa artikulong ito, titingnan natin kung ano ang pamamaraan ng HTTP GET, kung ano ang pamamaraan ng HTTP POST, kung kailan gagamitin ang bawat kahilingan, at kung ano ang pagkakaiba ng mga ito. Tingnan natin ang bawat konsepto nang hiwalay.

Ano ang HTML?

Ang HTML ay ang wikang ginagamit upang lumikha ng mga web page. Ang hypertext ay tumutukoy sa mga hyperlink na maaaring naglalaman ng isang HTML page. Ang markup language ay tumutukoy sa paraan ng paggamit ng mga tag upang tukuyin ang layout ng isang page at ang mga elemento sa isang page.
Nasa ibaba ang isang halimbawa ng HTML na ginagamit upang tukuyin ang isang pangunahing web page na may pamagat at isang talata ng teksto:



<Голова>
<Название>TechTerms.com

<Тело>

Ito ay isang halimbawa ng isang talata sa HTML.

Ang unang linya ay tumutukoy sa uri ng nilalaman na nilalaman sa dokumento., At , na lahat ay kasama sa halimbawa sa itaas. Ang pamagat ng pahina, metadata at mga link sa mga anchor file ay inilalagay sa pagitan ng aktwal na nilalaman ng pahina na inilalagay sa pagitan ng mga tag .

Ang web ay dumaan sa maraming pagbabago sa nakalipas na ilang dekada, ngunit ang HTML ay palaging ang pangunahing wikang ginagamit upang bumuo ng mga web page. Kapansin-pansin, habang ang mga website ay naging mas advanced at interactive, ang HTML ay naging mas simple. Kung ihahambing mo ang pinagmulan ng isang HTML5 page sa isang katulad na page na nakasulat sa HTML 4.01 o XHTML 1.0, ang HTML5 page ay magkakaroon ng mas kaunting code. Ito ay dahil umaasa ang modernong HTML sa Cascading Style Sheets o JavaScript upang i-format ang halos lahat ng elemento sa loob ng isang page.

Maraming mga dynamic na website ang bumubuo ng mga web page sa mabilisang gamit ang isang server-side scripting language gaya ng PHP o ASP. Gayunpaman, kahit na ang mga dynamic na pahina ay dapat na naka-format gamit ang HTML. Samakatuwid, ang mga wika ng script ay madalas na bumubuo ng HTML code na ipinadala sa web browser.

Ang HTTP Hypertext Transfer Protocol ay idinisenyo para sa komunikasyon sa pagitan ng mga kliyente at server at gumagana bilang protocol ng pagtugon sa kahilingan.

Ang web browser ay maaaring maging kliyente, at ang application sa computer na nagho-host ng website ay maaaring maging server.

Ang kliyente (browser) ay nagpapadala ng HTTP na kahilingan sa server, ang server ay nagbabalik ng tugon na naglalaman ng impormasyon tungkol sa katayuan ng kahilingan at maaari ring naglalaman ng hiniling na nilalaman.

Dalawang paraan ng kahilingan GET at POST

Dalawang karaniwang ginagamit na paraan para sa kahilingan-tugon sa pagitan ng kliyente at server ay:

    GET - humiling ng data mula sa tinukoy na mapagkukunan;

    POST - nagpapadala ng data na ipoproseso sa tinukoy na mapagkukunan.

Ang pagsasalin ng GET at POST ay literal na nangangahulugang pagtanggap at post-processing.

Higit pa tungkol sa HTTP

Ang HTTP ay isang protocol na ginagamit upang magpadala ng data sa Internet. Ito ay bahagi ng Internet Protocol suite at tumutukoy sa mga utos at serbisyo na ginagamit upang magpadala ng data ng web page.

Gumagamit ang HTTP ng modelo ng server-client. Ang kliyente ay maaaring isang computer sa bahay, laptop, o mobile device. Ang isang HTTP server ay karaniwang isang web host na nagpapatakbo ng software ng web server tulad ng Apache o IIS. Kapag ang isang user ay nag-access sa isang website, ang browser ay nagpapadala ng isang kahilingan sa naaangkop na web server at tumugon sa isang HTTP status code. Kung wasto ang URL at ipinagkaloob ang koneksyon, ipapadala ng server ang web page at mga nauugnay na file sa browser.

Kasama sa mga karaniwang HTTP status code ang:

    200 — matagumpay na kahilingan (umiiral ang web page);

    301 - Patuloy na gumagalaw (madalas na nagre-redirect sa isang bagong URL);

    401 — hindi awtorisadong kahilingan (kailangan ng pahintulot);

    500 - Error sa panloob na server (kadalasang sanhi ng hindi tamang configuration ng server).

POST at GET sa HTTP

Tinutukoy ng HTTP ang mga command na GET at POST na ginagamit upang iproseso ang mga pagsusumite ng form sa mga website. Ang CONNECT command ay ginagamit upang mapadali ang isang secure na koneksyon na naka-encrypt gamit ang SSL. Nagaganap ang mga naka-encrypt na HTTP na koneksyon sa HTTPS, isang extension ng HTTP na idinisenyo para sa mga secure na paglilipat ng data.

Ang mga URL na nagsisimula sa "http://" ay naa-access sa mga karaniwang hypertext transfer protocol at bilang default ay gumagamit ng port 80. Ang mga URL na nagsisimula sa "https://" ay naa-access sa isang secure na HTTPS na koneksyon at kadalasang gumagamit ng port 443.

POST

Ang POST ay isang serye ng mga pagsubok sa system na ginagawa ng mga computer at iba pang mga electronic device kapag naka-on ang mga ito. Maaaring ipakita ang mga resulta ng pagsubok sa screen, ipakita sa pamamagitan ng mga kumikislap na LED, o simpleng naitala sa loob. Sa mga computer system, ang operasyon ng POST ay ginagawa sa simula ng pagkakasunud-sunod ng boot. Kung pumasa ang lahat ng pagsubok, awtomatikong magpapatuloy ang natitirang proseso ng pagsisimula.

Ang mga operating system ng Mac at Windows device ay tumatakbo sa POST tuwing magbo-boot o magre-restart ang computer. Sinusuri ng pag-scan ang hardware at tinitiyak na gumagana nang tama ang processor, RAM, at mga storage device. Kung ang isang error ay nangyari sa panahon ng POST, ang proseso ng pagsisimula ay maaaring i-pause o ganap na huminto, at ang isang mensahe ay maaaring lumitaw sa monitor Sa mga PC, ang mga error sa POST ay madalas na lumalabas sa screen ng impormasyon ng BIOS. Maaaring lumitaw ang mga ito bilang mga cryptographic na code gaya ng "08" o bilang isang mensahe ng system gaya ng "Error sa offset ng memorya ng system." Sa Mac, ang mga error sa POST ay madalas na ipinapahiwatig ng isang simpleng graphic, tulad ng isang sirang icon ng folder, na nagpapahiwatig na ang boot device ay hindi natagpuan.

Mga pisikal na pagpapakita

Sa ilang mga kaso, ang screen ng computer ay maaaring hindi mag-on bago ang mga error sa POST. Kung nangyari ito, maaaring ipakita ang mga error code sa pamamagitan ng mga kumikislap na LED o beep. Halimbawa, ang isang Apple iMac ay magpe-play ng tatlong magkakasunod na tono, i-pause ng limang segundo, at pagkatapos ay ulitin ang mga tono kapag may nakitang masamang RAM sa panahon ng startup. Karamihan sa mga PC ay nagbe-beep din kapag may nakitang mga error sa POST, bagama't ang bawat tagagawa ay gumagamit ng kanilang sariling mga code.

Ang POST ay isang medyo teknikal na termino na ginagamit lamang ng mga computer technician sa regular na batayan. Gayunpaman, ito ay isang magandang acronym dahil nakakatulong ito sa iyong mas maunawaan ang mga mensahe ng error na maaaring lumabas sa mga computer o iba pang mga electronic device. Kung hindi magsisimula ang iyong computer dahil sa isang POST error, maaari kang gumamit ng isa pang device upang mahanap ang kahulugan at sanhi ng error mula sa website ng gumawa. Pagkatapos ay maaari mong gawin ang naaangkop na aksyon - alisin ang memory module o muling i-install ang video card at pagkatapos ay i-restart ang kagamitan.

GET

Ang POST ay isa ring paraan ng pagpasa ng mga HTML form variable mula sa isang web page patungo sa isa pa nang hindi ipinapakita ang mga ito sa address bar. Ang isang alternatibong paraan ay GET, na nagdaragdag ng mga halaga sa URL. Ang mga kahilingan sa HTTP POST ay nagbibigay ng karagdagang data mula sa kliyente (browser) patungo sa server sa katawan ng mensahe. Sa kabaligtaran, kasama sa mga kahilingan sa GET ang lahat ng kinakailangang data sa URL. Ang mga form sa HTML ay maaaring gumamit ng anumang paraan sa pamamagitan ng pagtukoy ng method=POST o method=GET (default) sa elemento

. Tinutukoy ng tinukoy na paraan kung paano isinumite ang data ng form sa server. Kapag ginamit ang paraan ng GET, ang lahat ng data ng form ay naka-encode sa URL bilang mga parameter ng string ng query. Sa POST, lumalabas ang data ng form sa katawan ng mensahe ng kahilingan sa HTTP.

Mga Pagkakaiba sa Pagtatanghal ng Form

Ang pamamaraan ng kahilingan ng POST ay humihiling sa web server na tanggapin at iimbak ang data na nakapaloob sa katawan ng mensahe ng kahilingan. Madalas na ginagamit kapag nag-a-upload ng file o nagsusumite ng nakumpletong web form.

Ang paraan ng paghiling ng HTTP GET ay kumukuha ng impormasyon mula sa server. Bilang bahagi ng isang kahilingan sa GET, maaaring ipasa ang ilang data sa string ng query ng URL, na tumutukoy sa mga termino para sa paghahanap, hanay ng petsa, o iba pang impormasyon na tumutukoy sa kahilingan.

Bilang bahagi ng isang kahilingan sa POST, maaaring ipadala ang isang arbitrary na dami ng data ng anumang uri sa server sa katawan ng mensahe ng kahilingan. Ang field ng header sa isang kahilingan sa POST ay karaniwang nagpapahiwatig ng uri ng media sa Internet ng katawan ng mensahe.

Ang pangunahing pagkakaiba sa pagitan ng mga kahilingan sa GET at POST ay ang mga ito ay tumutugma sa iba't ibang mga kahilingan sa HTTP tulad ng tinukoy sa mga detalye ng HTTP. Ang proseso ng pagsusumite para sa parehong paraan ay nagsisimula sa parehong paraan: ang form ng data set ay nilikha ng browser at pagkatapos ay naka-encode sa paraang tinukoy ng enctype attribute. Para sa METHOD="POST" ang attribute na enctype ay maaaring multipart/form-data o application/x-www-form-urlencoded, samantalang para sa METHOD="GET" ito ay na-trigger lang sa pamamagitan ng application/x-www-form-urlencoded This Ang data ng form ay nakatakda pagkatapos ay ipinadala sa server.

Upang magsumite ng isang form gamit ang METHOD="GET", ang browser ay gumagawa ng isang URL sa pamamagitan ng pagkuha ng halaga ng katangian ng pagkilos at pagdaragdag nito sa set ng data ng form, na naka-encode gamit ang application/x-www-form-urlencoded na uri ng nilalaman). Pagkatapos ay ituturing ng browser ang URL na ito na parang nagre-refer ito ng isang link (o parang manu-manong nai-type ng user ang URL). Hinahati ng browser ang URL sa mga bahagi at kinikilala ang host, pagkatapos ay nagpapadala ng kahilingan sa GET sa host na iyon kasama ang natitirang URL bilang argumento. Mahalagang tandaan na ang prosesong ito ay nangangahulugan na ang mga form na ito ay limitado sa mga ASCII code. Ang partikular na atensyon ay dapat bayaran sa pag-encode at pag-decode ng iba pang mga uri ng mga character kapag ipinapasa ang mga ito sa isang ASCII URL.

Ang pagsusumite ng isang form na may METHOD="POST" ay nagiging sanhi ng isang POST na kahilingan na maipadala gamit ang halaga ng katangian ng pagkilos at isang mensaheng nabuo ayon sa uri ng nilalaman na tinukoy ng katangian ng enctype.

PHP

Ang PHP ay binuo sa HTML. Nangangahulugan ito na ang PHP code ay maaaring ipasok sa isang HTML na pahina. Ang PHP code ay binabasa o na-parse ng server na nagho-host ng page. Ang output ng GET at POST function sa PHP sa isang page ay karaniwang ibinabalik bilang HTML code na mababasa ng browser. Dahil ang PHP code ay na-convert sa HTML bago mag-load ang page, hindi matingnan ng mga user ang PHP code sa page. Ginagawa nitong sapat ang mga pahina ng PHP para sa pag-access ng mga database at iba pang ligtas na impormasyon.

Karamihan sa syntax ng PHP ay hiniram mula sa ibang mga wika tulad ng C, Java, at Perl. Gayunpaman, ang PHP ay may ilang natatanging tampok at espesyal na tampok. Ang layunin ng wikang ito ay upang paganahin ang mga web developer na magsulat ng mga dynamic na nabuong pahina nang mabilis at madali.

Wordpress

Ang WordPress ay isang libreng sistema ng pamamahala ng nilalaman na ginagamit upang lumikha at mapanatili ang mga website. Ang kadalian ng paggamit nito at ang mga natatanging tampok sa pag-blog ay nakatulong na maging pinakasikat na tool sa pag-blog sa Internet.

Ang interface ng WordPress ay nagpapahintulot sa sinumang walang karanasan sa web development na lumikha at mag-publish ng isang website. Ang mga built-in na tool sa pag-blog ay nagbibigay ng madaling paraan upang subaybayan ang mga indibidwal na post, bisita, at komento ng user.

Kahit na mayroong libu-libong mga template at plugin ng WordPress na magagamit, ang sistema ng POST GET sa WordPress ay mayroon pa ring mga limitasyon. Dahil ito ay isang template-based na serbisyo, ang user ay dapat magsimula sa isang pre-built na website sa halip na lumikha ng mga page mula sa simula. Bukod pa rito, walang kakayahang magpasok ng mga script o magpanatili ng database na may parehong antas ng kontrol na inaalok ng custom na website.

Ang tool na POST_GET_ID() ay nagbibigay-daan sa mga script na manipulahin ang item dahil mayroon itong natatanging ID at kapag isinumite ito bilang isang form sa pamamagitan ng mga pamamaraang ito ang dropdown ay isusumite na may natatanging ID na nagbibigay-daan sa script na mapansin kung aling post ang tumatakbo. Bilang kahalili, maaaring magpadala ng nakatagong variable na magpapahintulot sa script na makita kung aling post ang nabibilang sa view.

10/30/16 9.7K

Paglikha ng mga kahilingan sa POST gamit ang PHP

Ang unang paraan para magsagawa ng PHP POST na kahilingan ay ang paggamit ng file_get_contents . Ang pangalawang paraan ay gagamit ng fread kasama ng ilang iba pang mga function. Ginagamit ng parehong opsyon ang stream_context_create function upang punan ang mga kinakailangang field ng header ng kahilingan.

Paliwanag ng Code

Ang $sPD variable ay naglalaman ng data na ililipat. Dapat ito ay nasa HTTP request string format, kaya dapat na naka-encode ang ilang espesyal na character.

Sa parehong file_get_contents function at ang fread function mayroon kaming dalawang bagong parameter. Ang una ay use_include_path . Dahil gumagawa kami ng HTTP na kahilingan, magiging mali ito sa parehong mga halimbawa. Kapag nakatakda sa true para magbasa ng lokal na mapagkukunan, hahanapin ng function ang file sa include_path .

Ang pangalawang parameter ay konteksto, na nilagyan ng return value ng stream_context_create, na kumukuha ng value ng $aHTTP array.

Paggamit ng file_get_contents upang gumawa ng mga kahilingan sa POST

Upang magpadala ng POST na kahilingan gamit ang file_get_contents sa PHP, kailangan mong gumamit ng stream_context_create upang manu-manong punan ang mga field ng header at tukuyin kung aling "wrapper" ang gagamitin - sa kasong ito HTTP:

$sURL = "http://brugbart.com/Examples/http-post.php"; // POST URL $sPD = "pangalan=Jacob&bench=150"; // POST data $aHTTP = array("http" => // Wrapper na gagamitin array("method" => "POST", // Request method // Request header are set below "header" => "Content - uri: application/x-www-form-urlencoded", "content" => $sPD)); $context = stream_context_create ($aHTTP); $contents = file_get_contents($sURL, false, $context); echo $contents;

Paggamit ng fread upang magsagawa ng mga kahilingan sa POST

Maaari mong gamitin ang function ng fread upang gumawa ng mga kahilingan sa POST. Ang sumusunod na halimbawa ay gumagamit ng stream_context_create upang mabuo ang kinakailangang mga header ng kahilingan sa HTTP:

$sURL = "http://brugbart.com/Examples/http-post.php"; // POST URL $sPD = "pangalan=Jacob&bench=150"; // POST data $aHTTP = array("http" => // Wrapper na gagamitin array("method" => "POST", // Request Method // Request header are set below "header" => "Content - uri: application/x-www-form-urlencoded", "content" => $sPD)); $context = stream_context_create ($aHTTP); $handle = fopen($sURL, "r", false, $context); $contents = ""; habang (!feof($handle)) ( $contents .= fread($handle, 8192); ) fclose($handle); echo $contents;

Gumagawa ng GET Requests gamit ang PHP

Magtutuon na tayo ngayon sa paggamit ng fread at file_get_contents upang mag-download ng nilalaman mula sa internet sa pamamagitan ng HTTP at HTTPS. Upang magamit ang mga pamamaraang inilarawan sa artikulong ito, dapat mong paganahin ang opsyong fopen wrappers. Upang gawin ito, kailangan mong itakda ang allow_url_fopen parameter sa On sa php.ini file.

Ang pagsasagawa ng mga kahilingan sa POST at GET sa PHP ay ginagamit upang mag-log in sa mga website, kunin ang nilalaman ng web page, o suriin para sa mga bagong bersyon ng mga application. Tatalakayin namin kung paano gumawa ng mga simpleng kahilingan sa HTTP.

Paggamit ng fread upang mag-download o tumanggap ng mga file sa Internet

Tandaan na ang pagbabasa ng web page ay limitado sa naa-access na bahagi ng packet. Kaya kailangan mong gamitin ang function na stream_get_contents ( katulad ng file_get_contents) o isang while loop upang basahin ang mga nilalaman sa mas maliliit na piraso hanggang sa maabot ang dulo ng file:

Sa kasong ito ng pagproseso ng PHP POST na kahilingan, ang huling argumento ng fread function ay katumbas ng laki ng fragment. Sa pangkalahatan, hindi ito dapat mas malaki sa 8192 ( 8*1024 ).

Kamakailan lamang, lalo akong nakakakita ng mga tanong sa pangunahing forum ng PHPClub sa paksa ng paglikha ng mga kahilingan sa POST at GET, pati na rin ang mga tanong sa paksang: "Paano ako makakabuo ng isang kahilingan sa POST gamit ang function ng header." Naniniwala ako na ang pangangailangang lagyan ng tuldok ang i sa paggamit ng teknolohiyang ito ay matagal nang nalampasan, dahil ang mga baguhang programmer ay sadyang hindi nauunawaan ang mga prinsipyo ng web tulad nito. Kaya, simulan natin ang ating paglalakbay sa mundo ng HTTP protocol.

1. HTTP protocol. Panimula

Gusto kong linawin kaagad ang isang maliit na bagay.

Ang kakila-kilabot na salitang protocol ay walang iba kundi isang kasunduan ng maraming tao, sa isang magandang sandali ay nagpasya ang mga tao: "Gawin natin ito sa ganitong paraan, at pagkatapos ay magiging maayos ang lahat." Walang dapat ikatakot, ang lahat ay sadyang mapangahas at isisiwalat na natin ang kahihiyan na ito. Kaya, ano ang HTTP protocol at para saan ito ginagamit?

1.1 Kliyente at server

Walang mga himala sa mundo, at lalo na sa mundo ng programming at Internet!

Kung sa tingin mo na ang lahat ay masyadong kumplikado, kung gayon nagkakamali ka. Ang tao ay idinisenyo sa paraang hindi niya kayang lumikha ng isang bagay na kumplikado, kung hindi man siya mismo ay malito dito :-) Kaya, mayroong isang browser at mayroong isang Web server.

Ang browser ay palaging ang nagpasimula ng pagpapalitan ng data. Ang isang Web server ay hindi basta-basta magpapadala ng kahit ano sa sinuman upang ito ay magpadala ng isang bagay sa browser - dapat itong hilingin ng browser.

  • Ang pinakasimpleng kahilingan sa HTTP ay maaaring magmukhang ganito:
  • KUMUHA ng http://www.php.net/ HTTP/1.0\r\n\r\n
  • GET (isinalin mula sa Ingles ay nangangahulugang "kumuha") - isang uri ng kahilingan ay maaaring iba, halimbawa POST, HEAD, PUT, DELETE (titingnan natin ang ilan sa mga ito sa ibaba).
  • http://www.php.net/ - URI (address) kung saan gusto naming makatanggap ng hindi bababa sa ilang impormasyon (natural, umaasa kaming matutunan ang HTML na pahina).
Ang HTTP/1.0 ay ang uri at bersyon ng protocol na gagamitin namin kapag nakikipag-ugnayan sa server.

Ang \r\n ay ang dulo ng linya, na dapat ulitin nang dalawang beses kung bakit magiging malinaw sa ibang pagkakataon.

Magagawa mo ang kahilingang ito nang napakasimple. Patakbuhin ang telnet.exe program, ipasok ang www.php.net bilang host, tukuyin ang port 80, at i-type lang ang kahilingang ito sa pamamagitan ng pagpindot sa Enter nang dalawang beses bilang \r\n\r\n. Bilang tugon, matatanggap mo ang HTML code ng pangunahing pahina ng site na www.php.net.

1.3 Istraktura ng kahilingan Tingnan natin kung ano ang binubuo ng isang kahilingan sa HTTP.

  • Ang lahat ay medyo simple. Magsimula tayo sa katotohanan na ang isang kahilingan sa HTTP ay isang ganap na makabuluhang teksto. Ano ang binubuo nito sa pangkalahatang kaso? Isasaalang-alang namin ang HTTP 1.0 protocol. Kaya: Linya ng Kahilingan
  • [General-Header | Request-Header | Entity-Header ]\r\n[ Entity-Body ]

  • Linya ng Kahilingan- string ng query
  • Format: "Method Request-URI HTTP-Version\r\n" Pamamaraan
  • - Ang paraan kung saan ipoproseso ang Request-URI na mapagkukunan ay maaaring GET, POST, PUT, DELETE o HEAD. Kahilingan-URI

- isang kamag-anak o ganap na link sa isang pahina na may set ng mga parameter, halimbawa, /index.html o http://www.myhost.ru/index.html o /index.html?a=1&b=qq.

Sa huling kaso, ang server ay makakatanggap ng isang kahilingan na may isang hanay ng mga variable a at b na may kaukulang mga halaga, at ang "&" sign - isang ampersand - ay nagsisilbing isang separator sa pagitan ng mga parameter. Bersyon ng HTTP

  • - bersyon ng HTTP protocol, sa aming kaso "HTTP/1.0". Lubos kaming interesado sa GET at POST na mga pamamaraan sa pagproseso. Sa pamamaraang GET maaari mong ipasa ang mga parameter sa script, at sa pamamaraang POST maaari mong tularan ang pagsusumite ng form.
    Format:
    Maaari lamang magkaroon ng dalawang parameter: Petsa o Pragma. Petsa - Petsa ng Greenwich sa format na "Araw ng linggo, Araw ng Buwan Taon HH:MM:SS GMT", halimbawa, "Tue, 15 Nob 1994 08:12:31 GMT" - petsa ng paggawa ng kahilingan.
  • Ang Pragma ay maaaring magkaroon ng isang walang-cache na halaga, na hindi pinapagana ang pag-cache ng pahina. Request-Header

    - bahagi ng header na naglalarawan sa kahilingan. Ang Request-Header ay maaaring magkaroon ng mga sumusunod na parameter:.
    Allow, Authorization, From, If-Modified-Since, Referer, User-Agent

  • Sa kabanatang ito, hindi namin isasaalang-alang ang parameter ng Awtorisasyon, dahil ginagamit ito upang ma-access ang mga pribadong mapagkukunan, na hindi gaanong kailangan. Maaari mong malaman kung paano bumuo ng isang awtorisadong access header sa iyong sarili sa www.w3c.org.
    Payagan
    - nagtatakda ng mga katanggap-tanggap na pamamaraan sa pagproseso.
  • Format: "Pahintulutan: GET | HEAD\n". Binabalewala ang parameter kapag tinukoy ang paraan ng pagproseso ng POST sa Request-Line. Tinutukoy ang mga katanggap-tanggap na paraan ng pagpoproseso ng kahilingan.
    Hindi binabago ng mga proxy server ang Allow parameter at naabot nito ang server nang hindi nagbabago.
    Mula sa - e-mail address ng taong nagpadala ng kahilingan. Format: "Mula sa: adderss\r\n".
  • Halimbawa, "Mula sa:[email protected]
    \r\n".
    Kung-Binago-Since
  • - nagsasaad na ang kahilingan ay hindi pa nabago mula noon at ganoon. Format: "If-Modified-Since: date\r\n"
    Ginagamit lamang para sa paraan ng pagproseso ng GET. Ang petsa ay tinukoy sa GMT sa parehong format tulad ng para sa Date parameter sa General-Header.
    Referrer
  • - isang ganap na link sa pahina kung saan sinimulan ang kahilingan, ibig sabihin, isang link sa pahina kung saan napunta ang user sa amin. Format: "Referrer: url\n".
    Halimbawa: "Referrer: www.host.ru/index.html\n".
  • Ahente ng Gumagamit- uri ng browser.
    Halimbawa: "User-Agent: Mozilla/4.0\n" Entity-Header.
  • Sa kabanatang ito, hindi namin isasaalang-alang ang parameter ng Awtorisasyon, dahil ginagamit ito upang ma-access ang mga pribadong mapagkukunan, na hindi gaanong kailangan.- bahagi ng header na naglalarawan sa data ng Entity-Body.
  • Ang bahaging ito ng kahilingan ay tumutukoy sa mga parameter na naglalarawan sa katawan ng pahina. Maaaring maglaman ang Entity-Header ng mga sumusunod na parameter: Payagan, Content-Encoding, Content-Length, Content-Uri, Mag-e-expire, Huling Binago, extension-header
    - isang parameter na katulad ng Allow from General-Header.
    Content-Encoding
    - uri ng pag-encode ng data Entity-Body.
  • Format: "Content-Encoding: x-gzip | x-compress | other type\n".- ang bilang ng mga byte na ipinadala sa Entity-Body. Ang value ng Content-Length ay may ganap na naiibang kahulugan para sa data na ipinadala sa MIME na format, kung saan ito ay gumaganap bilang isang parameter para sa paglalarawan ng isang bahagi ng data - "external/entity-body".
    Ang mga wastong numero ay mga integer mula sa zero at pataas.
  • Halimbawa: "Content-Length: 26457\n". Uri ng Nilalaman
    - uri ng ipinadalang data.
  • Halimbawa: "Content-Type: text/html\n". Mag-e-expire
    - Ang oras kung kailan dapat alisin ang pahina sa cache ng browser.
  • Format: "Mag-e-expire: petsa\n". Ang format ng petsa ay pareho sa format ng petsa para sa parameter ng Petsa mula sa General-Header. Huling Binago
    - oras ng huling pagbabago ng ipinadalang data.
  • Format: "Huling Binago: petsa\n". Ang format ng petsa ay pareho sa format ng petsa para sa parameter ng Petsa mula sa General-Header. extension-header
    - bahagi ng header, na maaaring inilaan, halimbawa, na iproseso ng isang browser o iba pang program na tumatanggap ng dokumento. Sa bahaging ito, maaari mong ilarawan ang iyong mga parameter sa format na "ParameterName: parametervalue\n". Ang mga parameter na ito ay hindi papansinin kung ang programa ng kliyente ay hindi alam kung paano iproseso ang mga ito.

Halimbawa: "Cookie: r=1\r\n" - nagtatakda ng mga kilalang cookies para sa page.

At ngayon, pagkatapos ng gayong kakila-kilabot na mga salita, subukan nating huminahon nang kaunti at maunawaan kung ano ang kailangan natin? Natural, mauunawaan natin ang mga halimbawa.

Isipin natin na kailangan nating makakuha ng isang pahina mula sa site sa pamamagitan ng pagpasa ng Cookies, kung hindi, ipapadala lamang tayo bilang mga hindi inanyayahang bisita, at higit pa rito, alam na pinapayagan kang ma-access ang pahinang ito pagkatapos mong bisitahin ang pangunahing pahina ng site.

2 GET na paraan

Isulat natin ang ating kahilingan.
KUMUHA ng http://www.site.ru/news.html HTTP/1.0\r\n

Host: www.site.ru\r\n
Cookie: kita=1\r\n

Ang kahilingang ito ay nagsasabi sa amin na gusto naming makuha ang mga nilalaman ng pahina sa http://www.site.ru/news.html gamit ang GET method. Ang Host field ay nagpapahiwatig na ang pahinang ito ay matatagpuan sa www.site.ru server, ang Referer field ay nagpapahiwatig na kami ay dumating para sa mga balita mula sa pangunahing pahina ng site, at ang Cookie field ay nagpapahiwatig na kami ay itinalaga ng ganoon at ganoong cookie. Bakit napakahalaga ng mga field ng Host, Referer at Cookie? Dahil ang mga normal na programmer, kapag gumagawa ng mga dynamic na site, suriin ang mga field ng data na lumalabas sa mga script (kabilang ang PHP) sa anyo ng mga variable. Para saan ito? Upang, halimbawa, upang maiwasan ang pagnanakaw sa site, i.e.

hindi sila nagtakda ng isang program dito para sa awtomatikong pag-download, o upang ang isang taong bumibisita sa site ay palaging makarating dito mula lamang sa pangunahing pahina, atbp.

Ngayon isipin natin na kailangan nating punan ang mga field ng form sa pahina at magpadala ng isang kahilingan mula sa form, hayaang mayroong dalawang field sa form na ito: login at password (login at password) - at, siyempre, alam natin ang login at password.
KUMUHA ng http://www.site.ru/news.html HTTP/1.0\r\n
KUMUHA ng http://www.site.ru/news.html?login=Petya%20Vasechkin&password=qq HTTP/1.0\r\n
Host: www.site.ru\r\n
Cookie: kita=1\r\n

Referer: http://www.site.ru/index.html\r\n

Ang aming pag-login ay "Petya Vasechkin" Bakit dapat naming isulat ang Petya%20Vasechkin? Ito ay dahil ang mga espesyal na character ay maaaring makilala ng server bilang mga palatandaan ng pagkakaroon ng isang bagong parameter o pagtatapos ng isang kahilingan, atbp. Samakatuwid, mayroong isang algorithm para sa pag-encode ng mga pangalan ng parameter at ang kanilang mga halaga upang maiwasan ang mga sitwasyon ng error sa kahilingan. Ang isang buong paglalarawan ng algorithm na ito ay matatagpuan, at ang PHP ay mayroong rawurlencode at rawurldecode na mga function para sa pag-encode at pag-decode, ayon sa pagkakabanggit. Gusto kong tandaan na ginagawa ng PHP ang mismong pag-decode kung naipasa ang mga naka-encode na parameter sa kahilingan. Ito ang nagtatapos sa unang kabanata ng aking pagkakakilala sa HTTP protocol. Sa susunod na kabanata, titingnan natin ang mga kahilingan sa pagbuo tulad ng POST (isinalin mula sa Ingles bilang "ipadala"), na magiging mas kawili-wili, dahil Ito ang uri ng kahilingan na ginagamit kapag nagpapadala ng data mula sa mga HTML form.

3. POST na paraan.

3.1 Uri ng Nilalaman: application/x-www-form-urlencoded.

Sumulat kami ng isang kahilingan na katulad ng aming kahilingan sa GET na ilipat ang login at password, na tinalakay sa nakaraang kabanata:


KUMUHA ng http://www.site.ru/news.html HTTP/1.0\r\n
KUMUHA ng http://www.site.ru/news.html?login=Petya%20Vasechkin&password=qq HTTP/1.0\r\n
Host: www.site.ru\r\n
Uri ng Nilalaman: application/x-www-form-urlencoded\r\n
Haba ng Nilalaman: 35\r\n
Cookie: kita=1\r\n

Dito makikita natin ang isang halimbawa ng paggamit ng mga field ng header na Uri ng Nilalaman at Haba ng Nilalaman. Ang Content-Length ay nagsasabi kung gaano karaming mga byte ang sasakupin ng lugar ng data, na pinaghihiwalay mula sa header ng isa pang line break \r\n.

Ngunit ang mga parameter na dating inilagay sa Request-URI para sa isang GET na kahilingan ay nasa Entity-Body na ngayon. Ito ay makikita na sila ay nabuo sa parehong paraan, kailangan mo lamang na isulat ang mga ito pagkatapos ng pamagat. Gusto kong tandaan ang isa pang mahalagang punto: walang pumipigil, kasabay ng hanay ng mga parameter sa Entity-Body, paglalagay ng mga parameter sa ibang mga pangalan sa Request-URI, halimbawa:
.....
Cookie: kita=1\r\n
I-POST ang http://www.site.ru/news.html?type=user HTTP/1.0\r\n

login=Petya%20Vasechkin&password=qq

3.2 Uri ng Nilalaman: multipart/form-data

Sa sandaling napagtanto ng mundo ng Internet na masarap magpadala ng mga file sa pamamagitan ng mga form, itinakda ng W3C consortium ang tungkol sa pagpino sa format ng kahilingan ng POST. Sa oras na iyon, ang format ng MIME (Multipurpose Internet Mail Extension - multi-purpose na mga extension ng protocol para sa pagbuo ng mga mensahe sa Mail) ay malawak na ginagamit, samakatuwid, upang hindi muling likhain ang gulong, nagpasya kaming gamitin ang bahagi ng format ng pagbuo ng mensahe na ito upang lumikha Mga kahilingan sa POST sa HTTP protocol.

Ano ang mga pangunahing pagkakaiba sa pagitan ng format na ito at ang uri ng application/x-www-form-urlencoded?

Ang pangunahing pagkakaiba ay ang Entity-Body ay maaari na ngayong hatiin sa mga seksyon, na pinaghihiwalay ng mga hangganan (boundary). Ang pinaka-kawili-wili ay ang bawat seksyon ay maaaring magkaroon ng sarili nitong header upang ilarawan ang data na nakaimbak dito, i.e.

sa isang kahilingan maaari kang maglipat ng data ng iba't ibang uri (tulad ng sa isang Mail letter, maaari kang maglipat ng mga file kasabay ng text).
KUMUHA ng http://www.site.ru/news.html HTTP/1.0\r\n
KUMUHA ng http://www.site.ru/news.html?login=Petya%20Vasechkin&password=qq HTTP/1.0\r\n
Host: www.site.ru\r\n

Kaya simulan na natin. Isaalang-alang natin muli ang parehong halimbawa sa paglipat ng pag-login at password, ngunit ngayon sa isang bagong format.
Cookie: kita=1\r\n
I-POST ang http://www.site.ru/news.html HTTP/1.0\r\n Haba ng Nilalaman: 209\r\n
--1BEF0A57BE110FD467A Haba ng Nilalaman: 209\r\n
Haba ng Nilalaman: 209\r\n
\r\n Haba ng Nilalaman: 209\r\n
I-POST ang http://www.site.ru/news.html HTTP/1.0\r\n Haba ng Nilalaman: 209\r\n
Nilalaman-Disposisyon: form-data; name="login" Haba ng Nilalaman: 209\r\n
Haba ng Nilalaman: 209\r\n
Petya Vasechkin Haba ng Nilalaman: 209\r\n
Nilalaman-Disposisyon: form-data; name="password" Haba ng Nilalaman: 209\r\n

Ngayon ay unawain natin ang nakasulat. :-) Espesyal kong binigyang-diin ang ilang \r\n character na naka-bold para hindi sila sumanib sa data. Kung titingnan mong mabuti, mapapansin mo ang boundary field pagkatapos ng Content-Type. Tinutukoy ng field na ito ang separator ng seksyon - hangganan. Isang string na binubuo ng mga Latin na titik at numero, pati na rin ang ilang iba pang mga simbolo (sa kasamaang palad, hindi ko maalala kung alin ang iba) ay maaaring gamitin bilang isang hangganan. Sa katawan ng kahilingan, ang "--" ay idinaragdag sa simula ng hangganan, at ang kahilingan ay nagtatapos sa isang hangganan, kung saan ang mga character na "--" ay idinaragdag din sa dulo. Ang aming kahilingan ay may dalawang seksyon, ang una ay naglalarawan sa field sa pag-login, at ang pangalawa ay naglalarawan sa field ng password.

Ang Content-Disposition (ang uri ng data sa seksyon) ay nagsasabi na ito ay magiging data mula sa form, at ang field ng pangalan ay tumutukoy sa pangalan ng field. Dito nagtatapos ang header ng seksyon at ang sumusunod ay ang lugar ng data ng seksyon kung saan inilalagay ang halaga ng field (hindi na kailangang i-encode ang halaga!).

Nais kong ituon ang iyong pansin sa katotohanan na hindi mo kailangang gumamit ng Haba ng Nilalaman sa mga header ng seksyon, ngunit sa header ng kahilingan dapat mo at ang halaga nito ay ang laki ng buong Entity-Body, na lilitaw pagkatapos ng pangalawang \ r\n sumusunod na Content-Length: 209\ r\n. Yung. Ang Entity-Body ay pinaghihiwalay mula sa header ng karagdagang line break (na makikita rin sa mga seksyon).

Ngayon, magsulat tayo ng kahilingan para maglipat ng file.
KUMUHA ng http://www.site.ru/news.html HTTP/1.0\r\n
I-POST ang http://www.site.ru/postnews.html HTTP/1.0\r\n
Host: www.site.ru\r\n
Referer: http://www.site.ru/news.html\r\n
Uri ng Nilalaman: multipart/form-data; hangganan=1BEF0A57BE110FD467A\r\n
Cookie: kita=1\r\n
I-POST ang http://www.site.ru/news.html HTTP/1.0\r\n Haba ng Nilalaman: 209\r\n
Haba ng Nilalaman: 491\r\n Haba ng Nilalaman: 209\r\n
Haba ng Nilalaman: 209\r\n
Nilalaman-Disposisyon: form-data; name="news_header" Haba ng Nilalaman: 209\r\n
I-POST ang http://www.site.ru/news.html HTTP/1.0\r\n Haba ng Nilalaman: 209\r\n
Halimbawa ng balita Haba ng Nilalaman: 209\r\n
Nilalaman-Disposisyon: form-data; name="news_file"; Haba ng Nilalaman: 209\r\n
filename="news.txt" Haba ng Nilalaman: 209\r\n
Haba ng Nilalaman: 209\r\n
Uri ng Nilalaman: application/octet-stream Haba ng Nilalaman: 209\r\n
Nilalaman-Disposisyon: form-data; name="password" Haba ng Nilalaman: 209\r\n

Content-Transfer-Encoding: binary

Isang napakahalagang punto. Karamihan sa mga CGI script ay isinulat ng matatalinong tao, kaya gusto nilang suriin ang uri ng papasok na file, na nasa Content-Type. Para saan? Kadalasan, ang pag-upload ng mga file sa mga website ay ginagamit upang makatanggap ng mga larawan mula sa bisita. Kaya, sinusubukan mismo ng browser na tukuyin kung anong uri ng file ang gustong ipadala ng bisita at ipasok ang naaangkop na Uri ng Nilalaman sa kahilingan. Sinusuri ito ng script kapag natanggap, at, halimbawa, kung hindi ito gif o jpeg, binabalewala nito ang file na ito. Samakatuwid, kapag lumilikha ng isang kahilingan "manu-mano", alagaan ang halaga ng Uri ng Nilalaman upang ito ay pinakamalapit sa format ng inilipat na file.

Sa aming halimbawa, nabuo ang isang kahilingan kung saan inililipat ang isang text file. Ang isang kahilingan para sa paglilipat ng isang binary file ay nabuo sa parehong paraan.

4. Pahabol.

Sa palagay ko ay hindi sulit na pag-usapan nang detalyado ang tungkol sa pagpapadala ng mga kahilingan sa server. Ito ay usapin ng purong teknolohiya ng RHP :-). Sapat na maingat na basahin ang seksyon sa mga function para sa pagtatrabaho sa mga socket, o sa mga function ng CURL module sa opisyal na dokumentasyon ng PHP.

Mula sa itaas, umaasa ako na malinaw na ngayon kung bakit ang tanong ay: "Paano ako makakabuo ng isang kahilingan sa POST gamit ang header function?" - walang kahulugan.

Ang header(string) function ay nagdaragdag lamang ng entry sa request header, ngunit hindi sa request body.



May isa pang uri ng kahilingan - Uri ng Nilalaman: multipart/mixed, sana pagkatapos mong basahin ang artikulong ito ay madali mong maunawaan ang ganitong uri ng iyong sarili. Maaari mo itong pag-aralan nang detalyadoNakaraang artikulo
Ina-update ang firmware para sa mga Samsung Galaxy na smartphone Naghahanda para sa firmwareSusunod na artikulo