Primirea datelor solicitate în controlor. POST, GET: cum diferă cererile unele de altele

Văzând oameni copulând în filme, remarcăm uneori: wow, ce bine s-au jucat! Doar dă-i un Oscar! Nimeni nici măcar nu se gândește la faptul că sexul poate să nu fie simulat - știm cum o cantitate mare„spectatorii din afara” sunt de obicei prezenți pe platou și, în general, dacă totul este real, atunci se numește diferit și nu ajunge pe rafturile magazinelor video obișnuite. Dar există excepții de la fiecare regulă și, în cazuri rare, actul sexual real încă pătrunde ecran mare. Am amintit cele mai remarcabile exemple din această serie.

Afiș pentru filmul „Sweet Sweetback: Song of the Scoundrel”

Regizorul indie Melvin Van Peebles știa exact de ce avea nevoie atunci când a scris, regizat și montat filmul despre nenorocirile unei mașini de sex negru numită Sweet Sweetback. Personajul principal trebuie să încalce multe tabuuri de gen care existau la începutul anilor 70: ucide câini și ofițeri de poliție, urine și, desigur, face mult sex, inclusiv sex interrasial. Nu a fost ușor să semnezi pe cineva să facă asta, iar Melvin nu avea bani nici pentru un cascador, nici măcar pentru un substudant, așa că regizorul însuși a jucat rol principal, realizând cu curaj o serie de acte sexuale în fața camerei cu persoane pe care abia îi cunoșteau. Confirmarea că totul era real a fost gonoreea pe care a contractat-o ​​în timpul filmărilor, pentru tratamentul căreia Van Peebles a reușit chiar să stocheze o anumită sumă de la Film Directors Guild - totuși, în final acești bani au fost cheltuiți pentru producția filmului. Rezultatul, după cum s-a dovedit, a meritat: „The Scoundrel’s Song” a devenit unul dintre cele mai profitabile și mai discutate filme din 1971, dând simultan naștere unui subgen cu totul nou - „blaxploitation”.

Poster pentru filmul „Pink Flamingos”

Filmul celebrului provocator de film John Waters despre divertismentul deviant al a două familii de ciudați cu mintea slabă nu este strict recomandat pentru vizionarea fanilor „căpșunului”: nervii tăi s-ar putea să nu reziste la ceea ce vezi. Întrucât regizorul, prin propria sa recunoaștere, a căutat din partea publicului nu aplauze, ci o reacție de vărsături (la premieră, publicului chiar i s-au oferit pungi de igienă), metodele sale sunt potrivite: sex cu pui zdrobit, defecare și masturbare, una dintre personajele care mănâncă rahat de câine, muie mamei la propriul ei fiu. Faptul că „mama” a fost interpretată de celebrul travestit Divine (pe numele real Harris Glen Milstead) nu face filmul plăcut; cu toate acestea, cu toată prospețimea ei, componenta sexuală încă palidează oarecum pe fondul caca, pe care Divine, conform interviurilor sale de-a lungul anilor, fie a mâncat, fie nu a mâncat. Drept urmare, regizorul a pus capăt zvonurilor, declarând responsabil că, având în vedere practic buget zero Nu avea fonduri pentru recuzită și dublu. Deci totul a fost „usturoi” (cu posibila excepție a canibalismului), iar nefericiții pui, vai, au murit și ei pe bune.

Inca din filmul "The Wanted"


Thrillerul lui William Friedkin criminal în serie, dezmembrând gay, a fost amintit de telespectatori nu numai pentru participarea lui Al Pacino, ci și pentru scenele de sex gay surprinse în camerele de filmat în numeroase cluburi gay. „Totul a fost real”, a recunoscut ulterior regizorul „The Exorcist”, spunând că inițial homosexualii din New York cu care a făcut cunoștință în baruri speciale l-au ajutat să adune material pentru film, iar apoi au jucat în el. - Nu există membri ai Breslei Actorilor Extrași în filmul meu. I-am plătit pe acești tipi ca figuranți, dar în realitate ei doar stăteau în locurile în care filmam și făceam chestia asta.” Studiourile care au finanțat filmul nu au fost mulțumiți de rezultat, care a avut un rating pornografic X și l-au forțat să fie tăiat îngrozitor, lăsând majoritatea „căpșunilor” pe podeaua salii de tăiere. Dar filmul a eșuat încă la box office - se crede că a fost filmul care a bătut ultimul cui în sicriul erei Noului Hollywood, care a dat multor regizori independenți bani pentru a face filme „nu pentru toată lumea”. Scenele șterse, de altfel, au fost restaurate ulterior de James Franco în documentarul „Interior. Bar din piele” - și pe bună dreptate, nu degeaba a încercat Friedkin, într-adevăr.

Afiș pentru filmul „Imperiul simțurilor”


Povestea unei prostituate japoneze din anii 30, în ciuda sincerității șocante a scenelor de sex care o însoțesc, care chiar și în Japonia natală a costat editările de cenzură a filmului, iar regizoarea Nagisa Oshima - o acuzație de judecată, în general, încă nu a avut astfel de probleme serioase cu închiriere, ca exemplele ulterioare ale genului erotic. Ea a reușit să câștige atât statutul de cult, susținut de merite artistice incontestabile, cât și ovație la Cannes. Până în 1990, „Empire of Feelings” a reușit să pătrundă chiar și în cinematografele sovietice (deși cu ștampila „copiilor sub șaisprezece ani li se interzice vizionarea”), sufland mintea cetățenilor fără experiență cu demonstrații de felatie și alte pătrunderi fără ambiguitate și provocând indignare în mass-media. la „acte de copulare autentică fără nici un văl”. Așa că poporul sovietic a înțeles: poate că nu există sex în URSS, dar în Japonia cu siguranță există sex. Apropo, scena de castrare prezentă în „Empire of the Senses” încă nu era reală - chiar și pentru cineaștii japonezi care nu sunt împovărați în mod deosebit cu întrebări de moralitate, acest lucru ar fi fost prea mult.

Afiș pentru filmul „Caligula”


Cei care nu sunt familiarizați cu istoria creației „Caligula” sunt surprinși de modul în care Tinto Brass a reușit să atragă actori precum Malcolm McDowell, John Gielgud, Peter O’Toole, Helen Mirren într-un film porno. Sicriul se deschide simplu: în ciuda reputației lui Brass, el nu a intenționat ca filmul să fie pornografic - iubitor de axile neras plănuia de fapt să facă un film istoric despre sângerosul împărat roman și tot sexul pe care l-a filmat a fost simulat. Dar după ce sponsorul, editorul revistei porno Penthouse, Bob Guccione, a început să ceară „adevărat hardcore” (statutul de „cinema pentru adulți” ar permite creșterea prețului biletelor la film), Brass a refuzat și a fost concediat, iar Guccione însuși s-a așezat pe scaunul regizorului și a completat șase minute de pornografie pură, care a fost introdusă destul de grosolan în filmul terminat, fără a-i avertiza pe restul participanților la proiect. Inutil să spun, cât de tare au lovit fălcile actorilor principali la premieră.

Afiș pentru filmul „Ken Park”


După scandaloșii, dar încă nepornografici „Copii” despre viața sexuală a adolescenților, regizorul Larry Clark nu s-a calmat și a făcut „Ken Park” - din nou despre adolescenți - în care și-a forțat eroii să meargă pe teritoriul cunnilingusului, muie, masturbare, sex de grup și alte lucruri dificil de simulat prezentate a închide. Având în vedere vârsta destul de fragedă a actorilor care trebuiau să participe la acte de natură sexuală, filmul a făcut furori serios în presă și a fost interzis în mai multe țări, inclusiv în Statele Unite. Argumentele directorului, care a asigurat că toți participanții la proiect aveau deja 18 ani, adică pot acționa pe drept în orice porno hardcore, s-au schimbat puțin în ochii majorității societății conservatoare, care a raționat: poate, desigur, adolescenții fac sex, dar arată-l Oricum nu este nevoie de el în cinematografe. Și apoi, dintr-o dată, publicul va învăța ceva nou...

Afiș pentru filmul „Iepurele maro”


Nimeni nu și-ar aminti astăzi acest film dacă nu ar fi Chloë Sevigny în rolul principal feminin, pe care actorul central și regizorul cu normă parțială al filmului, Vincent Gallo (care este și producătorul și scenaristul), a convins-o să joace de aproape. să facă felatie asupra lui însuși, iubitul lui. La Cannes, The Brown Rabbit a fost atât de huiduit, încât Gallo a promis că va renunța la regie, dar, totuși, nu s-a ținut de cuvânt. Cariera lui Sevigny s-a prăbușit, de asemenea, în mod previzibil - în următorii 10 ani, nici un singur interviu de-al ei nu a fost complet fără discursuri pocăite despre faptul că ea a avut încredere în zadar în instinctele regizorului, care a promis că va face un hit în festival. Astăzi, în epoca hacking-ului iPhone, astfel de videoclipuri nu vor surprinde pe nimeni, dar la începutul anilor 2000, astfel de scandaluri erau încă o noutate, așa că fata a avut multe probleme din partea societății. Faptul că, conform intrigii, eroina ei era dependentă de droguri și, într-adevăr, muia scandaloasă s-a întâmplat doar în fantezia înflăcărată a personajului lui Gallo, s-a schimbat puțin: pe film, totul era mai mult decât real, așa cum hoardele de telespectatori s-au grăbit să vadă. , în următorii zece ani a fost descărcată în mod activ caseta scandaloasă de pe Internet doar pentru a urmări acea scenă.

Afiș pentru filmul „9 cântece”


Există o părere că moda filmelor de festival, în care o abundență de sex acoperă deficiențele regiei și actoriei, a fost începută de drama erotică muzicală „9 Songs” de Michael Winterbottom, al cărei conținut poate fi descris pe scurt cu cuvintele „un om de știință și un student fac sex, între ele sunt numere de concerte”. Întâlnirile sexuale nesimulate între personajele lui Kieran O'Brien și Margo Stilley au inclus complet set de domn: sex clasic, oral, ejaculare și alte atribute evidente ale genului porno. Actorilor li s-a oferit posibilitatea de a „repeti” înainte de filmare (o parte din acest material a fost inclus ulterior în film), după care au fost de acord cu fotografia principală, dar, totuși, când camera a fost oprită, O'Brien și Stilley au fost deloc interesați unul de celălalt. Relațiile prezentate în film au fost considerate „neapetisante” de majoritatea criticilor, iar intriga a fost considerată absentă (filmul chiar nu avea niciun scenariu). În plus, Parlamentul britanic l-a condamnat cu furie pe regizorul care a hotărât să troleze gusturile publicului cu întrebarea sacramentală „de ce nu poți arăta dragostea în filme, pentru că e la fel de firesc ca să mănânci?”, și modelul de modă care a jucat rolul principal. a cerut să-și elimine numele din film înainte de lansare. Mai târziu, însă, Margot a încetat să se mai ascundă: oricât de slab s-a dovedit „9 Songs” în toate planurile, pentru ea au devenit începutul unei cariere de actorie destul de reușită.

Poster pentru filmul „Fuck Me”


Este naiv să credem că doar regizorii bărbați pot cere sex real de la actori. Thrillerul polițist „Fuck Me”, regizat de francezele Virginie Depant și Coralie Trinh Thi, l-au plănuit de la bun început ca o fuziune explozivă a cinematografiei de gen în spiritul „Natural Born Killers” și „Thelma and Louise” cu scene de fucking hard (din fericire, al doilea regizor avea multă experiență în acest sens, și pe ambele părți ale camerei). Pentru rolurile personajelor principale - prostituata Nadine și actrița porno Manu - au fost alese actrițe reale din categoria „X”, ceea ce le-a permis să joace cu adevărat scenele porno cu care este umplut filmul și să facă față componenta dramatică destul de bine. Adevărat, povestea în sine despre fetele cu un trecut dificil, care sunt supărate pe bărbați, care, în căutarea răzbunării, iau dracu și ucid pe toți cei care le ies în cale, a fost percepută de spectator ca fiind prea crude și feministe, iar eroinele s-au dovedit a fi prea crude și feministe. să fie cu adevărat respingător. Drept urmare, filmul a fost interzis pentru distribuție în mai multe țări și a avut probleme cu cenzura chiar și în Franța liberală. Cu toate acestea, ar fi ciudat dacă s-ar dovedi altfel.

Afiș pentru filmul „Ireversibil”


Știm la ce te gândești acum. Dar nu, ne grăbim să dezamăgim: celebra scenă de zece minute a violului anal al Monicăi Bellucci într-un pasaj subteran, care a făcut carieră tânărului regizor francez Gaspar Noe, este o imitație de la primul până la ultimul cadru (ca, apropo, este penetrarea anală în „Ultimul tango la Paris”, întrucât vorbim deja despre celebrele momente de film de șoc). Dar în film există și alte momente nesimulate, precum felatia și masturbarea. Noe, înainte și după, îi plăcea scenele porno - momente hardcore pot fi găsite în aproape fiecare film al său, începând cu debutul său de lungă durată „Unul împotriva tuturor” și terminând cu scurtmetraje de ani diferiți și în „Entering the Void” a devenit mai sofisticat și a arătat complet actul sexual din interior, cu toate acestea, era deja fotorealist animatie pe calculator. Apropo, scena erotică în care Bellucci este logodit cu Vincent Cassel a fost și ea filmată „în mod natural”, deoarece în timpul filmărilor actorii au fost căsătoriți fericiți unul cu celălalt. Dar în acest caz, Noe a cruțat sentimentele soților și a decis să se mulțumească cu erotismul ușor.

Afiș pentru filmul „Shortbus Club”


În comedia sa despre un club de sex din New York, John Cameron Mitchell a reușit să arate o gamă întreagă de „plăceri pentru adulți” - de la masturbare și sex în grup la, cum ar trebui să spun mai corect, autofelatio. Regizorul poate să nu fi spus la premieră că toate orgasmele din Shortbus Club sunt reale: totul este deja vizibil cu ochiul liber. „Nu consider filmul meu pornografic”, a spus el mai târziu. - Deoarece pornografia se caracterizează printr-o lipsă de obiective artistice, scopul ei este de a excita. Și nu cred că cineva va avea o erecție în timp ce urmărește filmul meu.” Porno sau nu - acest subiect poate fi dezbătut multă vreme, dar celebritățile cu greu își puteau permite o asemenea slăbiciune în fața camerei, așa că actorii au fost recrutați prin reclamă: Mitchell a vizionat cinci sute de aplicații video de la tari diferite, înainte de a găsi destui curajoși cinematografici dispuși să arunce deoparte rușinea falsă. Pentru a le ajuta să se elibereze mai ușor, el și cameramanul au lucrat goi în timpul filmării scenelor explicite. În ciuda faptului că filmul a fost filmat frumos și că într-adevăr se putea lăuda că are o intriga destul de distractivă, publicul conservator a fost oarecum surprins de caleidoscopul nestăpânirii sexuale aruncat asupra lui, astfel încât interpretul unuia dintre rolurile principale, radioul canadian gazda Lee Suk-Yin, după lansarea programului „Shortbus Club”, aproape că și-a pierdut locul de muncă. Din fericire, lui Francis Ford Coppola i-a plăcut filmul, iar mijlocirea lui a rezolvat problema.

Poster pentru filmul „Romance X”

Franțuzoaica Catherine Breillat, în drama sa de debut „Real Girl”, interzisă oriunde posibil și întinsă pe raft de mai bine de 20 de ani, a arătat ce lucruri complicate poate face o adolescentă plictisită cu vaginul ei. În „Romance X”, ea a decis să vadă ce este gata să facă o femeie când bărbatul ei iubit refuză să se culce cu ea. A fost chemat să ajute faimosul actor porno Rocco Siffredi, care a ajutat-o ​​pe eroina să se elibereze până la anumite limite - criticii au numărat masturbarea, muia, actul sexual, ejacularea și alte kunstyuki precum sado-maso; toate acestea, după cum se poate înțelege, fără nicio cenzură, teamă sau reproș. Cenzura a început mai târziu, când unele țări au avut dificultăți în a determina ratingul de vârstă al filmului, așa că pentru o anumită perioadă de timp spectatorul a fost rugat să aleagă între mai multe versiuni cu diferite grade de tăiere. În cele din urmă versiunea originala s-a difuzat la televiziunea de noapte în mai multe țări deodată, iar publicul s-a liniștit: ei bine, Rocco Siffredi ejaculează puțin în cadru, ei, da... Adică nimic atât de revoluționar. Ar fi mult mai apocaliptic dacă el, în locul lui munca regulata Am citit cu aspirație monologuri shakespeariane.

Afiș pentru filmul „Intimitate”


El este barman, ea actriță de teatru. Ei au secret mic, despre care alții nu ar trebui să știe. Dar cu cât durează mai mult relația lor secretă, cu atât barmanul singuratic este mai puțin mulțumit de regulile jocului... „Intimitatea” de Patrice Chéreau a atras atenția privitorului nu doar datorită naturalismului de a arăta întâlnirile a două persoane care, în afară de de la sexul rapid de miercuri, nu au nimic în comun, ci mai degrabă natura respingătoare a acestui naturalism: fără machiaj, fără cosmetice, adăugați la asta picioare păroase, acnee, figuri imperfecte și este puțin probabil să doriți să revizuiți filmul, talpa al cărui scop pare a fi acela de a dezvălui estetica urâtului. Cu toate acestea, în ciuda tuturor găurilor în complot, muia în prim-plan realizată de neozeelandeza Carrie Fox Willem Dafoe cu Charlotte Gainsbourg în Antichrist a fost destul de reală. Iar Shia LaBeouf, al cărui cap, după cum a jurat comunicatul Nymphomaniac, era lipit pe computer de trunchiul copulat al altcuiva, a recunoscut într-un interviu după premieră că nu a simulat așa ceva pe platoul de filmare. În general, se poate argumenta cui îi aparțineau exact bunurile, dar, cel puțin, nu există nicio îndoială că în toate benzile de mai sus organele genitale excitate au intrat în contact non-iluzoriu.

Rămâneți în legătură cu noi și fiți primul care primește cele mai recente recenzii, selecții și știri despre cinema!

Utilizarea metodelor GET și POST în PHP este dificil de supraestimat, deoarece aceste metode se găsesc pe aproape fiecare site web. Înainte de a studia materialul descris mai jos, vă sfătuiesc să vă familiarizați cu eticheta html

. Să ne uităm la fiecare dintre aceste metode în detaliu.

metoda GET

Metoda GET folosește un șir URL pentru a transfera date. Este posibil să fi observat adrese URL lungi și neclare. De exemplu: function.php?login=Alex&email=dezyakin. În acest caz, datele sunt procesate în function.php. După semnul de întrebare „?” există o listă de parametri trecuți (parametrii sunt separați prin „&”) cu valori: parametrului de conectare i se atribuie valoarea Alex, iar variabilei de e-mail îi este atribuită valoarea dezyakin. Datele vor fi stocate în matricea superglobală $_GET. Un exemplu de utilizare a metodei GET este prezentat mai jos:

Log in: E-mail: Folosind tabloul superglobal $_GET, afișăm valorile acceptate:*/ echo "
login = ". $_GET["login"] ; echo "
email = ". $_GET["e-mail"] ; ?>

Observați cum citim valorile din tabloul superglobal $_GET: $_GET[„nume_variabilă”]. În exemplul nostru, numele variabilelor au fost declarate sub forma (nume=login și nume=email).

Sfat:
Înainte de a procesa valorile primite, vă sfătuiesc să verificați existența acestora prin intermediul funcțiilor isset(nume_variabilă) sau gol (nume_variabilă)- aceste funcții au fost discutate în lecția anterioară 2: variabile în PHP. De exemplu:

verificarea existenței utilizând isset: if isset ($_GET["login"] ) ( operatori pentru procesarea autentificarii ... } //sau verificați existența folosind empty: dacă este gol ($_GET["email"] ) ( operatori pentru procesarea e-mailului ... } ?>

În formular, puteți specifica numele fișierului care va procesa valorile transferate. Acest lucru se face folosind atributul forme de acţiune, căruia îi puteți atribui adresa acestui fișier. În mod implicit, acest fișier este alocat fișierului curent (adică este procesat în fișierul în care se află formularul). Iată un exemplu în care datele dintr-un formular sunt transferate în fișierul srcipt.php pentru procesare:

Log in: E-mail:

Fișierul script.php trebuie să conțină un fel de handler de informații, altfel informațiile vor fi transmise în gol.

Metoda GET are multe dezavantaje:

  • Utilizatorul vede valorile parametrilor trecuți;
  • Utilizatorul poate falsifica cu ușurință parametrii trecuți;
  • Transmiterea incomodă a informațiilor binare (trebuie să le codificați în format text);
  • Volumul datelor transferate este limitat - 8 KB;

Datorită dezavantajelor menționate mai sus metoda GET este utilizat numai în cazurile în care este necesar să se transfere o cantitate mică de date, iar aceste date nu sunt clasificate în niciun fel.

metoda POST

Metoda POST diferă de GET prin faptul că datele sunt transferate într-o formă privată. Există o matrice superglobală $_POST din care datele pot fi citite astfel: $_POST[„nume_variabilă”]. De exemplu:

Log in: "> E-mail: ">
Folosind tabloul superglobal $_POST, afișăm valorile acceptate:*/ echo "
login = ". $_POST["login"] ; echo "
email = ". $_POST["e-mail"] ; ?>

Rezultatul executării codului de mai sus este prezentat în figura de mai jos:

După cum puteți vedea, adresa URL nu are nici un postscript, dar cu toate acestea datele au fost primite și afișate.

Notă:
1) Volumul valorilor transferate folosind metoda POST este limitat implicit și este egal cu 8 MB. Pentru a crește această valoare, trebuie să modificați directiva post_max_size din php.ini.

2) În versiunile anterioare ale PHP, în locul numelor scurte de matrice superglobale $_GET și $_POST, au fost folosite nume mai lungi: $HTTP_GET_VARS și $HTTP_POST_VARS . În mod implicit, acestea sunt dezactivate în PHP 5, dar le puteți activa în fișierul de configurare php.ini folosind parametrul register_long_arrays. În versiunea php 6 aceste nume lungi nu vor fi disponibile.

3) Înainte de a procesa variabilele din $_POST, vă sfătuiesc să verificați variabilele pentru prezența lor, așa cum sa făcut cu metoda GET.

Vreau să folosesc ASP pentru a genera cod într-o aplicație desktop C#.

Pentru a face acest lucru, am creat o gazdă simplă (derivată din System.MarshalByRefObject) care se ocupă de System.Web.Hosting.SimpleWorkerRequest prin HttpRuntime.ProcessRequest. Aceasta procesează scriptul ASPX specificat de cererea de intrare (folosind System.Net.HttpListener pentru a asculta cereri).

Partea client este reprezentată de System.ComponentModel.BackgroundWorker, care construiește System.Net.HttpWebRequest și primește răspunsul de la server.

O versiune simplificată a părții clientului meu a codului arată astfel:

Privat void SendRequest (expeditor obiect, DoWorkEventArgs e) ( // creați cererea cu parametrul GET var uri = "http://localhost:9876/test.aspx?getTest=321"; var cerere = (HttpWebRequest)WebRequest.Create(uri ); // anexează parametrul POST.Method = "POST";ContentType = "application/x-www-form-urlencoded"; (); postDataStream.Write(postData, 0, postData.Length // trimiteți cererea, așteptați răspunsul și stocați/printați conținutul folosind (var response = (HttpWebResponse)request.GetResponse()) ( folosind (var reader = new); StreamReader(response.GetResponseStream(), Encoding.UTF8)) ( _processedContent = reader.ReadToEnd(); Debug.Print(_processedContent); ) ) )

Codul meu de parte a serverului arată astfel (fără gestionarea excepțiilor etc.):

Public void ProcessRequests() ( // HttpListener la http://localhost:9876/ var listener = SetupListener(); // SimpleHost creat de ApplicationHost.CreateApplicationHost var host = SetupHost(); while (_running) (var context = listener. GetContext(); folosind (var writer = new StreamWriter(context.Response.OutputStream)) ( // procesează scriptul ASP și trimite răspunsul înapoi către gazda client.ProcessRequest(GetPage(context), GetQuery(context), writer); ) .Răspuns.Închidere();

Până acum e tot funcționează excelent atâta timp cât folosesc doar parametrii GET. Dar când vine vorba de preluarea datelor POST în scriptul meu ASPX, întâmpin probleme. Pentru testare folosesc următorul script:

// Parametrii GET funcționează: var getTest = Request.QueryString["getTest"]; Response.Write("getTest: " + getTest); // afișează „getTest: 321” // nu știu cum să accesați parametrii POST: var postTest1 = Request.Form["postTest"] // Request.Form este gol? ("postTest1: " + postTest1); // deci se imprimă "postTest1: " var postTest2 = Request.Params["postTest"] // Request.Params este gol?

Se pare că obiectul System.Web.HttpRequest cu care am de-a face în ASP nu conține nicio informație despre parametrul meu „posttest” POST. L-am verificat în modul de depanare și niciunul dintre participanți nu conținea nici numele parametrului „postTest”, nici valoarea parametrului „654”. Am încercat și metoda BinaryRead Request, dar din păcate este goală. Aceasta corespunde cu Request.InputStream == null și Request.ContentLength == 0. Și pentru a face lucrurile cu adevărat confuze, membrul Request.HttpMethod este setat la „GET”?!

Pentru a izola problema, am testat codul folosind un script PHP în loc de un script ASPX. E foarte simplu:

Print_r($_GET); // tipărește toate variabilele GET print_r($_POST); // tipărește toate variabilele POST

Iar rezultatul:

Matrice ( => 321) Matrice ( => 654)

Deci, cu scriptul PHP funcționează, pot accesa datele POST. De ce nu funcționează scriptul ASPX? ce fac greșit? Există un obiect sau o metodă specială în obiectul Response?

Poate cineva să dea un indiciu sau chiar să știe cum să rezolve asta? Vă mulțumesc anticipat.

Metodele GET și POST în HTTP și HTTPS sunt cele mai populare două metode utilizate pentru a transfera date de la client la server folosind HTTP (HyperText Transfer Protocol). Atât GET, cât și POST pot fi folosite pentru a trimite o solicitare și a primi un răspuns, dar există diferențe semnificative între ele.

Diferența dintre solicitările GET și POST în HTTP sau HTTPS este o întrebare populară în fiecare interviu de programare web. Deoarece HTML este independent de tehnologia serverului web precum Java, ASP sau PHP și HTTP este protocolul principal în spațiul Internet, importanța înțelegerii metodelor GET și POST nu poate fi ignorată în mod clar. În acest articol, ne vom uita la ce este metoda HTTP GET, ce este metoda HTTP POST, când să folosiți fiecare solicitare și care este diferența dintre ele. Să ne uităm la fiecare concept separat.

Ce este HTML?

HTML este limbajul folosit pentru a crea pagini web. Hipertextul se referă la hyperlinkurile pe care le poate conține o pagină HTML. Limbajul de marcare se referă la modul în care etichetele sunt utilizate pentru a defini aspectul unei pagini și elementele unei pagini.
Mai jos este un exemplu de HTML care este folosit pentru a defini o pagină web de bază cu un titlu și un paragraf de text:



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

<Тело>

Acesta este un exemplu de paragraf în HTML.

Prima linie specifică tipul de conținut conținut în document., Și , care sunt toate incluse în exemplul de mai sus. Titlul paginii, metadatele și linkurile către fișierele de ancorare sunt plasate între conținutul real al paginii este plasat între etichete .

Web-ul a trecut prin multe schimbări în ultimele decenii, dar HTML a fost întotdeauna limbajul principal folosit pentru dezvoltarea paginilor web. Interesant, în timp ce site-urile web au devenit mai avansate și mai interactive, HTML a devenit mai simplu. Dacă comparați sursa unei pagini HTML5 cu o pagină similară scrisă în HTML 4.01 sau XHTML 1.0, pagina HTML5 va avea mai puțin cod. Acest lucru se datorează faptului că HTML modern se bazează pe Cascading Style Sheets sau JavaScript pentru a formata aproape toate elementele dintr-o pagină.

Multe site-uri web dinamice generează pagini web din mers utilizând un limbaj de scriptare pe partea serverului, cum ar fi PHP sau ASP. Cu toate acestea, chiar și paginile dinamice trebuie formatate folosind HTML. Prin urmare, limbajele de scripting generează adesea cod HTML care este trimis către browserul web.

Protocolul HTTP de transfer hipertext este conceput pentru comunicarea între clienți și servere și funcționează ca un protocol cerere-răspuns.

Browserul web poate fi client, iar aplicația de pe computerul care găzduiește site-ul web poate fi serverul.

Clientul (browserul) trimite o cerere HTTP către server, serverul returnează un răspuns care conține informații despre starea cererii și poate conține, de asemenea, conținutul solicitat.

Două metode de solicitare GET și POST

Două metode frecvent utilizate pentru cerere-răspuns între client și server sunt:

    GET - solicită date de la resursa specificată;

    POST - trimite datele pentru a fi procesate către resursa specificată.

Traducerea GET și POST înseamnă literalmente primire și post-procesare.

Mai multe despre HTTP

HTTP este un protocol folosit pentru a transmite date prin Internet. Face parte din suita Internet Protocol și definește comenzile și serviciile utilizate pentru transmiterea datelor paginilor web.

HTTP utilizează un model server-client. Clientul poate fi un computer de acasă, laptop sau dispozitiv mobil. Un server HTTP este de obicei o gazdă web care rulează software de server web, cum ar fi Apache sau IIS. Când un utilizator accesează un site web, browserul trimite o solicitare către serverul web corespunzător și răspunde cu un cod de stare HTTP. Dacă URL-ul este valid și conexiunea este acordată, serverul va trimite pagina web și fișierele asociate către browser.

Codurile de stare HTTP comune includ:

    200 - cerere reușită (pagina web există);

    301 - Se mută în mod constant (redirecționează frecvent către o nouă adresă URL);

    401 — cerere neautorizată (autorizare necesară);

    500 - Eroare internă a serverului (de multe ori cauzată de configurarea incorectă a serverului).

POST și GET în HTTP

HTTP definește comenzile GET și POST care sunt utilizate pentru a procesa trimiterile de formulare pe site-uri web. Comanda CONNECT este utilizată pentru a facilita o conexiune sigură care este criptată folosind SSL. Conexiunile HTTP criptate au loc prin HTTPS, o extensie a HTTP concepută pentru transferuri securizate de date.

Adresele URL care încep cu „http://” sunt accesibile prin protocoalele standard de transfer hipertext și utilizează implicit portul 80. Adresele URL care încep cu „https://” sunt accesibile printr-o conexiune HTTPS securizată și folosesc adesea portul 443.

POST

POST este o serie de teste de sistem efectuate de computere și alte dispozitive electronice atunci când sunt pornite. Rezultatele testelor pot fi afișate pe ecran, afișate prin LED-uri intermitente sau pur și simplu înregistrate intern. În sistemele informatice, operația POST este efectuată la începutul secvenței de pornire. Dacă toate testele trec, restul procesului de pornire va continua automat.

Sistemele de operare ale dispozitivelor Mac și Windows rulează POST de fiecare dată când computerul pornește sau repornește. Scanarea verifică hardware-ul și se asigură că procesorul, memoria RAM și dispozitivele de stocare funcționează corect. Dacă apare o eroare în timpul POST, procesul de pornire se poate întrerupe sau opri complet, iar pe monitor poate apărea un mesaj. Pe computere, erorile POST apar adesea pe ecranul cu informații BIOS. Acestea pot fi afișate ca coduri cripto, cum ar fi „08” sau ca mesaj de sistem, cum ar fi „Eroare de compensare a memoriei de sistem”. Pe Mac, erorile POST sunt adesea indicate printr-un grafic simplu, cum ar fi o pictogramă de folder rupt, care indică faptul că dispozitivul de pornire nu a fost găsit.

Manifestări fizice

În unele cazuri, este posibil ca ecranul computerului să nu pornească chiar înainte de erorile POST. Dacă se întâmplă acest lucru, codurile de eroare pot fi afișate prin LED-uri intermitente sau semnale sonore. De exemplu, un Apple iMac va reda trei tonuri consecutive, va face o pauză timp de cinci secunde și apoi va repeta tonurile atunci când este detectată RAM defectuoasă în timpul pornirii. Majoritatea computerelor emite, de asemenea, un semnal sonor când sunt detectate erori POST, deși fiecare producător folosește propriile coduri.

POST este un termen destul de tehnic pe care numai tehnicienii de calculatoare îl folosesc în mod regulat. Cu toate acestea, este un acronim bun, deoarece vă ajută să înțelegeți mai bine mesajele de eroare care pot apărea pe computere sau alte dispozitive electronice. Dacă computerul nu pornește din cauza unei erori POST, puteți utiliza un alt dispozitiv pentru a găsi semnificația și cauza erorii de pe site-ul web al producătorului. Apoi puteți lua acțiunea corespunzătoare - scoaterea modulului de memorie sau reinstalarea plăcii video și apoi repornirea echipamentului.

OBȚINE

POST este, de asemenea, o metodă de transmitere a variabilelor de formular HTML de la o pagină web la alta fără a le afișa în bara de adrese. O metodă alternativă este GET, care adaugă valori la adresa URL. Solicitările HTTP POST oferă date suplimentare de la client (browser) către server în corpul mesajului. În schimb, solicitările GET includ toate datele necesare în adresa URL. Formularele în HTML pot folosi orice metodă specificând method=POST sau method=GET (implicit) pe element

. Metoda specificată determină modul în care datele formularului sunt trimise la server. Când este utilizată metoda GET, toate datele din formular sunt codificate în URL-ul ca parametri șir de interogare. Cu POST, datele formularului apar în corpul mesajului de solicitare HTTP.

Diferențele în prezentarea formularelor

Metoda de solicitare POST solicită serverului web să accepte și să stocheze datele incluse în corpul mesajului de solicitare. Folosit adesea la încărcarea unui fișier sau la trimiterea unui formular web completat.

Metoda de solicitare HTTP GET preia informații de pe server. Ca parte a unei solicitări GET, unele date pot fi transmise în șirul de interogare URL, specificând termenii de căutare, intervalele de date sau alte informații care specifică cererea.

Ca parte a unei cereri POST, o cantitate arbitrară de date de orice tip poate fi trimisă către server în corpul mesajului de solicitare. Câmpul de antet dintr-o solicitare POST indică de obicei tipul media de internet al corpului mesajului.

Principala diferență dintre cererile GET și POST este că acestea corespund unor solicitări HTTP diferite, așa cum sunt definite în specificațiile HTTP. Procesul de trimitere pentru ambele metode începe în același mod: setul de date din formular este creat de browser și apoi codificat în modul specificat de atributul enctype. Pentru METHOD="POST" atributul enctype poate fi multipart/form-data sau application/x-www-form-urlencoded, în timp ce pentru METHOD="GET" este declanșat doar prin application/x-www-form-urlencoded datele formularului sunt setate apoi trimise la server.

Pentru a trimite un formular folosind METHOD="GET", browser-ul construiește o adresă URL luând valoarea atributului de acțiune și adăugând-o la setul de date al formularului, codificat folosind tipul de conținut application/x-www-form-urlencoded). Browserul tratează apoi această adresă URL ca și cum ar fi referit la un link (sau ca și cum utilizatorul ar fi introdus manual adresa URL). Browserul împarte URL-ul în părți și recunoaște gazda, apoi trimite o solicitare GET acelei gazde cu restul URL-ului ca argument. Este important de reținut că acest proces înseamnă că aceste formulare sunt limitate la coduri ASCII. O atenție deosebită trebuie acordată codificării și decodificării altor tipuri de caractere atunci când le transmiteți la o adresă URL ASCII.

Trimiterea unui formular cu METHOD="POST" face ca o solicitare POST să fie trimisă folosind valoarea atributului de acțiune și un mesaj generat în funcție de tipul de conținut specificat de atributul enctype.

PHP

PHP este încorporat în HTML. Aceasta înseamnă că codul PHP poate fi inserat într-o pagină HTML. Codul PHP este citit sau analizat de serverul care găzduiește pagina. Ieșirea funcțiilor GET și POST în PHP pe o pagină este de obicei returnată ca cod HTML care poate fi citit de browser. Deoarece codul PHP este convertit în HTML înainte ca pagina să se încarce, utilizatorii nu pot vedea codul PHP pe pagină. Acest lucru face ca paginile PHP să fie suficiente pentru accesarea bazelor de date și a altor informații securizate.

O mare parte din sintaxa PHP este împrumutată din alte limbaje, cum ar fi C, Java și Perl. Cu toate acestea, PHP are o serie de caracteristici unice și caracteristici speciale. Scopul acestui limbaj este de a permite dezvoltatorilor web să scrie pagini generate dinamic rapid și ușor.

Wordpress

WordPress este un sistem gratuit de gestionare a conținutului folosit pentru a crea și întreține site-uri web. Ușurința de utilizare și caracteristicile unice de blogging l-au ajutat să devină cel mai popular instrument de blogging de pe Internet.

Interfața WordPress permite oricui fără experiență de dezvoltare web să creeze și să publice un site web. Instrumentele de blogging încorporate oferă o modalitate ușoară de a urmări postările individuale, vizitatorii și comentariile utilizatorilor.

Chiar dacă există mii de șabloane și pluginuri WordPress disponibile, sistemul POST GET din WordPress are încă limitările sale. Deoarece este un serviciu bazat pe șabloane, utilizatorul trebuie să înceapă cu un site web pre-construit, mai degrabă decât să creeze pagini de la zero. În plus, nu există posibilitatea de a insera scripturi sau de a menține o bază de date cu același nivel de control pe care îl oferă un site web personalizat.

Instrumentul POST_GET_ID() permite scripturilor să manipuleze elementul, deoarece are un ID unic, iar atunci când îl trimit sub formă de formular prin aceste metode, meniul drop-down va fi trimis cu un ID unic care permite scriptului să observe ce post rulează. Alternativ, ar putea fi trimisă o variabilă ascunsă care ar permite scriptului să vadă ce postare aparține vizualizarii.

Puteți crea scripturi simple, dar puternice pentru a colecta și procesa datele introduse în formularele HTML. În această secțiune, nu numai că veți învăța cum să creați scripturi de bază pentru procesarea formularelor, dar veți învăța și tehnici utile pentru validarea introducerii formularelor atât pe serverul Web, cât și în browserul utilizatorului.

Despre formularele HTML

Formularele HTML, cea mai comună metodă de colectare a informațiilor bazate pe web, constau dintr-un grup de etichete HTML speciale care reprezintă elemente ale interfeței cu utilizatorul pe o pagină web. Câmpurile de text, butoanele și casetele de validare sunt exemple de elemente care permit utilizatorilor să interacționeze cu o pagină Web și să trimită informații către serverul Web.

De exemplu, următoarele etichete HTML generează un formular în care utilizatorul poate introduce un prenume, un prenume și o vârstă, inclusiv un buton pentru a trimite informațiile către serverul web. Acest formular conține, de asemenea, o etichetă de intrare ascunsă (nu este vizibilă în browserul web) pe care o puteți folosi pentru a transmite informații suplimentare serverului web.

O discuție detaliată a tuturor etichetelor de formular HTML depășește scopul acestei secțiuni. Există multe surse care acoperă crearea de formulare HTML utile și ușor de utilizat. De exemplu, puteți utiliza Vizualizatorul sursă al browserului pentru a vedea cum sunt construite formularele HTML pe alte site-uri Web. În plus, consultați Microsoft MSDN Online la http://msdn.microsoft.com/ pentru informații despre cele mai bune practici pentru utilizarea formularelor HTML și a altor tehnologii de internet.

Prelucrarea informațiilor introduse într-un formular în ASP

Odată creat formularul HTML, este necesar să procesați intrarea utilizatorului, adică să-l trimiteți în fișierul .asp pentru analizare și alte acțiuni. Revizuiți programul HTML din exemplul anterior. Rețineți că atributul ACTION al etichetei

se referă la fișierul Profile.asp. Când un utilizator trimite informații HTML, browserul le POSTĂ într-un fișier .asp de pe server, în acest caz Profile.asp. Fișierul .asp poate conține scripturi care procesează informații și interacționează cu alte scripturi, componente COM și resurse, cum ar fi o bază de date.

Există trei moduri principale de a colecta informațiile introduse în formularele HTML folosind ASP:

  • un fișier .htm static care conține un formular, valorile din care sunt transmise fișierului .asp;
  • un fișier .asp care creează un formular care trimite informații către un alt fișier .asp;
  • un fișier .asp care creează un formular care trimite informații către sine, adică către fișierul .asp care conține formularul.

Primele două metode funcționează în același mod în care formularele interacționează cu programele de pe serverul Web, altele decât ASP, ceea ce simplifică foarte mult sarcina de colectare și procesare a informațiilor introduse în formular. A treia metodă este deosebit de eficientă și va fi discutată în secțiune.

Preluarea datelor introduse într-un formular

obiect ASP Cerere oferă două familii care facilitează recuperarea informațiilor introduse într-un formular și trimise printr-o solicitare URL.

Familia QueryString

Familie Șir de interogare returnează valorile formularului transmise serverului web ca text după semnul întrebării din adresa URL solicitată. Valorile formularului pot fi adăugate la adresa URL solicitată folosind fie metoda HTTP GET, fie prin adăugarea manuală a valorilor formularului la adresa URL.

De exemplu, dacă exemplul de formular anterior folosește metoda GET (METHOD="GET") și utilizatorul intră Claire, HectorȘi 30 , următoarea solicitare URL va fi trimisă la server:

Http://Workshop1/Painting/Profile.asp?FirstName=Clair&LastName=Hector&Age=30&UserStatus=New

Fișierul Profile.asp poate conține următorul script de procesare a datelor de formular:

Buna ziua,<%= Request.QueryString("FirstName") %> <%= Request.QueryString("LastName") %>. Pentru tine<%= Request.QueryString("Age") %>ani!<% If Request.QueryString("UserStatus") = "New" Then Response.Write "Вы в первый раз посещаете данный веб-узел!" End if %>

În acest caz, serverul web va returna următorul text utilizatorului browserului web:

Bună Clair Hector. Ai 30 de ani! Este prima dată când vizitezi acest site!

Familie Șir de interogare conține, de asemenea, un parametru opțional care poate fi utilizat pentru a accesa una dintre mai multe valori din URL-ul solicitat (folosind metoda GET). De asemenea, folosind proprietatea Numara, puteți afla numărul de valori de tipul specificat.

De exemplu, un formular care conține o listă derulantă poate genera următoarea interogare:

Http://OrganicFoods/list.asp?Food=Apples&Food=Olives&Food=Bread