php posielať údaje na server. Externé premenné (premenné mimo PHP) Php získa parametre požiadavky

  • 20.06.2020

Webové programovanie je z väčšej časti len spracovanie rôznych údajov zadaných používateľom – teda spracovanie HTML formuláre.
Snáď neexistuje žiadny iný jazyk ako PHP, ktorý by vám tak uľahčil úlohu spracovania a parsovania, t.j. premenné, ktoré pochádzajú (z prehliadača používateľa). Faktom je, že všetky potrebné funkcie sú zabudované do jazyka PHP, takže ani nemusíte myslieť na vlastnosti protokolu HTTP a myslieť na to, ako sa odosielajú a prijímajú formuláre POST, či dokonca nahrávanie súborov Vývojári PHP majú zaopatrené na všetko.

Tu sa nebudeme zaoberať mechanikou protokolu HTTP, ktorý je zodpovedný za doručovanie údajov z prehliadača na server a naopak, tomu je venovaná špeciálna časť PHP a HTTP. Hlboko sú tam zvážené aj princípy práce s HTML formulármi.

Teraz budeme uvažovať o týchto mechanizmoch iba z aplikovaných pozícií bez toho, aby sme sa ponorili do teórie.

Aby sme mohli prijímať údaje od používateľov, potrebujeme s nimi interaktívnu interakciu.

Teraz sa pokúsme napísať skript, ktorý v parametroch a výstupoch prevezme používateľské meno:

"Hej,<имя>!".

Najprv sa pozrime na najjednoduchší spôsob odovzdania názvu skriptu – jeho priamym zadaním do adresy URL za znakom ? - napríklad vo formáte meno=meno. Tu je príklad:

http://localhost/script.php? meno=meno

Náš skript musí rozpoznať parameter názov. Teda, zjednodušene povedané, skript (skript) musí akceptovať parameter názov ako premenná názov a potom vypíšte do prehliadača používateľa reťazec „Dobrý deň,<имя>!". Môžete to urobiť takto:

Písanie skriptu, ktorý preberá parameter názov a zobrazenie výsledku v prehliadači používateľa a následné uloženie pod menom skript.php:

echo "Dobrý deň, $_GET["meno"] !";
?>

V našom príklade sme použili preddefinovanú premennú $_GET["meno"]"akceptovať" parameter názov. Teraz prechádza GET-parameter požiadavky meno=Sasha, dostaneme nasledujúci výsledok:

Ahoj Sasha!

Teraz skúsme odovzdať parameter názov nie z reťazca dopytu prehliadača, ale prostredníctvom formulára HTML. Vytvárame HTML dokument s nasledujúcim obsahom:


Názov:

Teraz uložme tento HTML dokument na našom testovacom serveri (localhost) pod názvom odoslať.html v rovnakom adresári, kde sme už skript uložili skript.php.

Teraz spustíme HTML dokument v prehliadači:

http://localhost/send.html

Zadajte meno do poľa a stlačte tlačidlo "GO!". Formulár odovzdá parameter prostredníctvom požiadavky GET názov náš scenár skript.php. Ak ste urobili všetko správne a váš webový server funguje správne, do poľa formulára sa zobrazí názov, ktorý ste zadali! V paneli s adresou prehliadača uvidíte cestu a parameter, ktorý ste odovzdali názov.

Teraz musíme pochopiť, ako môžeme odovzdať veľa parametrov, aspoň na začiatok dva.

Potrebujeme teda, aby skript vydal nasledovné:

"Hej,<имя>! Vám<возраст>rokov!".

To znamená, že musíme skriptu odovzdať 2 parametre: názov a Vek.

Teraz napíšeme scenár skript.php, ktorý má dva parametre: názov a Vek, ako aj dokument HTML s formulárom, ktorý odovzdá tieto dva parametre nášmu novému skriptu:

echo "Ahoj $_GET["name"] ! Máš $_GET["age"] rokov!";
?>

A tu je HTML dokument odoslať.html, s ktorými sme parametre názov a Vek prejdite do nášho skriptu:



Zadajte svoje meno:

Zadajte vek:



Teraz má náš skript dva parametre názov a Vek a vypíše do prehliadača výsledok vo formáte: "Dobrý deň,<имя>! Vám<возраст>rokov!".

Po odovzdaní parametrov skriptu dávajte pozor na panel s adresou prehliadača, bude to vyzerať asi takto (bez kódovania adresy URL v cyrilike):

http://localhost/script.php?name=Sasha&age=23

V závislosti od nastavení tlmočníka existuje niekoľko spôsobov, ako získať prístup k údajom z formulárov HTML. Tu je niekoľko príkladov:

// Dostupné od PHP 4.1.0

echo $_GET["používateľské meno"];
echo $_POST["používateľské meno"];
echo $_REQUEST["používateľské meno"];



Možno ste si všimli, že na väčšine stránok môžete vidieť nasledujúce adresy:

http://website/index.php?blog=2

Tu, aj bez znalosti php, môžete hádať, že pristupujeme k súboru index.phpČo však nasleduje za otáznikom, vie len málokto. Všetko je celkom jednoduché: ?blog=2 toto je deklarácia globálnej premennej "$_GET["blog"]" s hodnotou "2". Skriptu teda odovzdám premennú, ktorá je zodpovedná za zobrazovanie informácií z databázy. Poďme si napísať malý skript, v ktorom všetko jasne uvidíte:

if(isset($_GET["blog"])) (
echo $_GET["blog"];
}
?>

Operátor podmienky if() používame ako podmienku, existuje tento riadok:

Isset($_GET["blog"])

isset() vám umožňuje zistiť, či existuje premenná, ktorá je uvedená v zátvorkách, teda stav, ktorý som opísal v kóde, znie takto: Ak existuje premenná $_GET["blog"], potom zobrazte obsah tejto premennej na obrazovke. Tu je to, čo sa stalo:

Myslím, že je to jasné Vytvorí sa globálna premenná $_GET s identifikátorom, ktorý sme deklarovali v paneli s adresou ( v tomto prípade s ID "blog")

Teraz chcem objasniť jeden bod. Predpokladajme, že potrebujeme deklarovať dve premenné, ako to urobiť? Prvá premenná je deklarovaná za otáznikom "?" Druhá premenná je deklarovaná za takýmto znakom "&" ( Úprimne povedané, neviem, čo je to za znak.), tu je príklad deklarovania troch premenných:

http://website/index.php?a=1&b=2&c=3

Tu je výstupný kód:

if(isset($_GET["a"]) AND isset($_GET["b"]) AND isset($_GET["c"])) (
echo $_GET["a"]."
";
echo $_GET["b"]."
";
echo $_GET["c"]."
";
}
?>

Podmienka znie takto:

Ak existuje globálna premenná $_GET["a"] a globálna premenná $_GET["b"] a globálna premenná $_GET["c"], zobrazte ich na obrazovke, tu je výsledok:

Formuláre

Predtým, než prejdeme na príspevok otázky, musíte pochopiť, čo sú formuláre? Prečo je to potrebné? Pretože globálna premenná $_POST[""] sa vytvára prostredníctvom formulárov. čo je formulár? Toto sú polia, do ktorých používateľ zadáva vlákno informácií. Polia sú v jednom riadku, veľké polia, sú tam aj prepínače, zaškrtávacie políčka. Vezmime si to pekne pekne po poriadku...

Formulár je značka:


tvarové prvky

Formulár má atribúty, uvediem tie najbežnejšie:

Vytvoríme formulár:


tvarové prvky

Ako súbor handler som vložil súbor test.php pretože práve v ňom pre vás píšem príklady. Spôsob odosielania som nastavil na príspevok, pretože tieto spôsoby sa používajú v 99,9% prípadov. Nášmu formuláru som dal aj názov – forma

Teraz sa ponorme do sveta tvarových prvkov. Prvá vec, ktorú musíte pochopiť, je, že takmer všetky prvky sú značky. rozdiel je len v atribúte typu tieto značky. Dovoľte mi uviesť zoznam použitých prvkov formulára:

Som si istý, že ste na takéto polia narazili viac ako raz, takže tu, ako sa hovorí: „bez komentárov“

Teraz si urobme malý tréningový dotazník, s ktorým budeme ďalej pracovať. Našou úlohou je zostaviť malý dotazník, ktorý nám prezradí meno výplňníka, pohlavie, z akej krajiny je, jeho obľúbenú farbu a textové pole, kam môže používateľ pridať niečo o sebe. To som urobil:

Vaše priezvisko Patronyma:

Vaše pohlavie:
M
F

Z ktorej krajiny pochádzaš



Obľúbená farba(y):

Čierna:
červená:
Biely:
Ďalší:

O sebe:




Všimnite si, že takmer každá značka má atribút hodnotu načo to je? Obsahuje údaje, ktoré sa chystáte preniesť na inú stránku. Dúfam, že je to jasné

Ak teraz spustíme tento kód v prehliadači, uvidíme nasledovné:

Na formulári som použil atribút akcie so zmyslom test.php to znamená, ako som povedal, že údaje z formulára sa prenesú do súboru test.php.

POST žiadosť

Teraz napíšme php kód, ktorý nám umožní vidieť informácie, ktoré sme zadali. Kde sú údaje uložené? V prípade požiadavky get boli naše údaje v globálnej premennej $_GET[""]. Na základe žiadosti o príspevok sa údaje uložia do globálnej premennej $_POST[""]. V hranatých zátvorkách musíte napísať, ako v prípade globálnej premennej get, identifikátor. Otázkou je, kde môžem získať tento identifikátor? Preto potrebujeme atribút name na prvkoch formulára! Práve tieto mená slúžia ako náš kľúč v post globálnom poli. No, začnime popisovať skript:

if(isset($_POST["submit"])) (
echo "Názov: ".$_POST["fio"]."
";
echo "Pohlavie: ".$_POST["sex"]."
";
echo "Krajina pobytu: ".$_POST["mesto"]."
";

Echo "Obľúbené farby:
";
echo $_POST["color_1"]."
";
echo $_POST["color_2"]."
";
echo $_POST["color_3"]."
";
echo $_POST["color_4"]."
";
echo "O mne: ".$_POST["o"]."


";
}
?>

Podmienka if, ktorú sme napísali, hovorí: Ak globálna premenná $_POST["submit"] existuje, potom údaje zobrazíme na obrazovke. Táto globálna premenná sa vytvorí, ak klikneme na tlačidlo Odoslať, a preto v tomto príklade potrebujeme atribút name na tlačidle. Možno sa pýtate, prečo je atribút názvu tlačidla voliteľný? Všetko je celkom jednoduché. Programátor väčšinou nesleduje stlačenie tlačidla, ale sleduje odosielané dáta. Pre správne fungovanie napríklad kontaktného formulára je potrebné sledovať nie stlačenie tlačidla, ale správnosť zadávania údajov a zistiť, či boli tieto údaje vôbec zadané. V našom príklade sme nekontrolovali odoslané údaje, ale jednoducho sme sledovali kliknutie na tlačidlo, aby sme príklad zjednodušili... Získali sme:

Záver

Nuž a dnes sme rozobrali dva spôsoby prenosu dát medzi skriptami a zoznámili sme sa aj s formulármi v cvale. Naozaj dúfam, že tieto informácie budú pre vás užitočné. Ak máte nejaké otázky alebo nápady, napíšte komentáre. Veľa šťastia, to je na dnes všetko!

P.S.: Chcete, aby sa počítačové hry stali ešte realistickejšími? directx 11 pre Windows 7 si môžete stiahnuť zadarmo na Windows in! Užite si skvelú grafiku!

Opäť teda pokračujeme v štúdiu základov PHP a v tomto článku sa zoznámime so spôsobmi odovzdávania premenných v PHP, konkrétne s Metódy GET a POST. Každý z nich má svoje klady a zápory a používa sa vo vhodných situáciách, o ktorých sa bude diskutovať v tomto článku. Pozrieme sa aj na príklady kódu, ktoré demonštrujú, ako fungujú metódy POST a GET.

Odovzdávanie premenných pomocou metódy GET

Tento spôsob odovzdávania premenných sa používa v PHP na odovzdávanie premenných do súboru pomocou panela s adresou. To znamená, že premenné sa prenášajú okamžite cez panel s adresou prehliadača. Príkladom môže byť napríklad odkaz na článok vo WordPresse bez použitia CNC (SEF), ktorý vyzerá asi takto:

https://website/?p=315

To znamená, že v tomto prípade je odovzdaná premenná $p s hodnotou 315. Teraz sa pozrime bližšie na metódu GET na príklade. Povedzme, že do súboru potrebujeme odovzdať tri premenné $a, $b a $c GET metóda a zobraziť ich súčet na obrazovke. Na to môžete použiť nasledujúci kód.

$a = $_GET["a"]; $b = $_GET["b"]; $c = $_GET["c"]; $summa = $a + $b + $c; echo "Súčet $a + $b + $c = $suma";

Pretože všetky premenné budú umiestnené pred prechodom globálne pole GET(), potom najprv priradíme našim premenným hodnoty zodpovedajúcich prvkov poľa GET. Robíme to hneď na začiatku, aby sme sa vyhli rôznym chybám pri odovzdávaní premenných. Ďalej, aby sme predviedli prácu, napíšeme ľubovoľný vzorec a výsledok zobrazíme na obrazovke.

Ak chcete otestovať fungovanie metódy GET, jednoducho pridajte otáznik "?" a prostredníctvom ampersandu "&" vypíšte premenné s ich hodnotami. Dajme si súbor get.php, ktorý sa nachádza v koreňovom adresári lokality. Na prenos premenných do súboru stačí do panela s adresou napísať nasledovné.

https://website/get.php?a=1&b=2&c=3

Ako môžete vidieť z príkladu, najprv pridáme otáznik hneď za názov súboru. Ďalej predpíšeme premennú a určíme jej hodnotu prostredníctvom rovná sa. Potom prostredníctvom ampersandu rovnakým spôsobom vypíšeme ďalšie premenné. Teraz, keď klikneme na tento odkaz, uvidíme súčet premenných $a, $b a $c.

Táto metóda je veľmi jednoduchá a nevyžaduje vytváranie ďalších súborov. Všetky potrebné údaje prichádzajú priamo cez panel s adresou prehliadača.

Teraz prejdime k druhému spôsobu odovzdávania premenných v PHP - metóda POST.

Odovzdávanie premenných v PHP pomocou metódy POST

Táto metóda vám umožňuje skryto prenášať premenné z jedného súboru do druhého. Ako ste už pochopili, na tieto účely sa zvyčajne používajú dva súbory. Prvý obsahuje formulár na zadanie počiatočných údajov a druhý obsahuje spustiteľný súbor, ktorý akceptuje premenné. Aby sme to demonštrovali, pozrime sa na nasledujúci kód.

Kód prvého súboru s formulárom na odoslanie údajov. Nazvime to post-1.php

  • akcia - zadajte súbor, do ktorého sa premenné prenesú.
  • metóda - metóda na odovzdávanie premenných. V našom prípade ide o metódu POST.
  • meno - názov formulára. Zároveň sa premenná s týmto názvom prenesie do súboru.

Textové polia:

  • meno - názvy premenných. V našom prípade ide o meno a priezvisko (premenné meno a priezvisko).
  • typ – typ poľa. V našom prípade ide o textové pole.
  • názov – názov tlačidla a premennej, ktorá sa bude odovzdávať spolu s ostatnými premennými.
  • typ - typ tlačidla. V našom prípade ide o tlačidlo na odoslanie údajov.
  • hodnota - text na tlačidle.

Kód druhého súboru, ktorý bude slúžiť ako prijímač premenných. Nazvime to post-2.php

$meno = $_POST; $priezvisko = $_POST; echo "Hodnoty premenných odovzdaných metódou POST - $meno a $priezvisko";

Rovnako ako pri metóde GET, premenným najskôr priradíme hodnoty zodpovedajúcich prvkov globálne polePOST. Ďalej, kvôli prehľadnosti, zobrazujeme tieto premenné na obrazovke pomocou .

Teraz, keď sa načíta prvý súbor, načíta sa formulár. Po zadaní údajov kliknite na tlačidlo "Odoslať", v dôsledku čoho sa na novej karte otvorí stránka s druhým súborom, na ktorej sa zobrazia hodnoty zapísané vo formulári na predchádzajúcej stránke. To znamená, že hodnoty premenných z prvého súboru sa prenesú do druhého súboru.

Týmto sa končí tento článok o odovzdávaní premenných v PHP. Ak nechcete zmeškať výskyt ďalších článkov na blogu, odporúčam prihlásiť sa na odber noviniek akýmkoľvek pohodlným spôsobom v sekcii „Odber“ alebo pomocou formulára nižšie.

To je všetko. Veľa šťastia a úspechov pri zvládnutí základov PHP.

Mám štruktúru adresy URL s reťazcom dopytu a parametrom s názvom position ,

http://computerhelpwanted.com/jobs/?occupation=administrator&position=network+administrator

Mám tiež rozbaľovaciu ponuku na výber formulára s pozíciou výberu názvu formulára.

Keď používateľ vykoná výber, odošle hodnoty možností do atribútu action s parametrom select name="position" na použitie v reťazci dotazu.

Moja otázka znie, ako získam prístup k hodnotám výberu formulára oddelene od hodnôt reťazca dotazu?

Používam metódu _GET na volanie hodnoty z parametra reťazca dotazu.

$pozícia = isset($_GET["pozícia"]) ? ($_GET["pozícia"]) : "";

Je zrejmé, že to získava hodnotu zo štruktúry adresy URL, nie z prvku formulára. Alebo možno je, nie som si istý. Zdá sa však, že testovaním som dospel k záveru, že to získava podľa adresy URL, nie podľa formulára.

Ako sa dostanem k hodnote výberu formulára pri porovnávaní v mojom PHP?

Obnoviť

Mám problém s kanonickou adresou URL uvedenou v hlavičke.

Tak to má byť

jediný rozdiel je - a + v reťazci dopytu.

Nie všetky moje dopytové reťazce majú +. Niektorí majú -. Ale zobrazujem obsah na oboch adresách URL, či už majú - alebo +. Tak či onak, obe adresy URL získajú rovnaký obsah stránky.

Keďže sa však kanonický generuje dynamicky z URI a nie z hodnoty prvku formulára, na oboch stránkach s obsahom sú 2 rôzne kanonické znaky.

Použitie _Get('value') získa hodnotu z reťazca dotazu namiesto prvku formulára. Viem to, pretože hodnota prvku formulára má medzi správcom siete medzeru, ktorá sa zakóduje, keď sa formulár odošle ako sieť+správca. Takže ak môžem porovnať s hodnotou prvku formulára, môžem nastaviť správnu kanonickú hodnotu.

Rozhodol som sa urobiť si cheat sheet o hlavných metódach odosielania a prijímania údajov z webového servera pomocou php a js. A tak sa zrodila táto poznámka. V ňom som zhodnotil najčastejšie používané spôsoby výmeny dát medzi webovým klientom a webovým serverom, ktoré používajú php vývojári.

Najobľúbenejšie na odosielanie údajov sú php get request a php post request, po ktorých nasleduje technológia AJAX. Aké sú teda rozdiely medzi žiadosťami o získanie a odoslanie.

  • požiadavka get sa odovzdá do panela s adresou (v hlavičke http) a je viditeľná pre používateľa
  • žiadosť o odoslanie sa odovzdá v tele dokumentu
  • veľkosť žiadosti o získanie je obmedzená (maximálne 276 znakov)
  • metóda get neprenáša súbory
  • post metóda nahráva súbory

php získať požiadavku

Aby sme mohli požiadať o získanie php, musíme najprv vytvoriť html formulár s poľom na zadávanie údajov. V značke formulára uvádzame, ku ktorému súboru na serveri máme pristupovať a akým spôsobom sa má odoslať

. Tiež nezabudnite nastaviť atribút name do poľa, bude to názov bunky poľa GET $_GET["data"]; z ktorého dostaneme údaje do súboru na serveri. Myslím, že je jasné, ako odosielať údaje cez formulár, teraz ich skúsme odovzdať cez panel s adresou. index.php?data=1 ak takúto požiadavku napíšeme do adresného riadku a odošleme, tak v súbore v index.php dostaneme z $_GET["data"] hodnotu 1. S týmto si myslím, že všetko je to jasné, teraz príklad.

Úloha: existuje súbor index.php s formulárom na odoslanie požiadavky get do iného súboru, napríklad get.php. Keď je prijatá požiadavka get, súbor get.php musí odovzdať pole s údajmi index.php. V index.php by sa malo zobraziť výsledné pole.

Implementácia. súbor index.php

//Vo formulári pomocou metódy get odošlite hodnotu 1 cez skryté pole



súbor get.php

array("login" => "Správca", "heslo" => "h734yuiw8"), 1 => array("login" => "Ján", "heslo" => "78dfud776s")); //získanie vlajky $flag=$_GET["vlajka"]; //ak je príznak 1, potom odošlite pole ako getom //magic vo funkcii serializácie if($flag==1)( header("Location: index.php?data=".serialize($users)." "); exit; ) else( header("Umiestnenie: index.php"); exit; ) ?>

php žiadosť o príspevok

Požiadavka na príspevok php prechádza aj cez formulár, iba atribút v značke formulára bude method="post" . A my dostaneme údaje v zadanom súbore z poľa post $_POST["search"] a okamžite uvedieme príklad.

Úloha: odošlite údaje z index.php metódou POST na server v súbore get.php a získajte ich späť, ak je pole na odosielanie údajov prázdne, zobrazí sa správa o prázdnom poli. Začnime riešenie s index.php


Vyplňte pole žiadosti

Zadaná požiadavka:



súbor get.php

AJAX Array Passing

Urobme rovnakú úlohu s ajaxom. Ajax je vo všeobecnosti technológia súvisiaca s javascriptom, ale v rámci poznámky o prenose údajov na server sa dotkneme aj tejto technológie. Samozrejme ajax je téma na samostatný článok. Počas požiadavky zobrazíme aj indikátor načítania gif. Máme tiež dva súbory index.php a get.php. súbor index.php. Nezabudnite zahrnúť jquery. Dávajte pozor, ak chcete skryť gif pri prvom načítaní stránky, priraďte k bloku boxu štýl zobrazenia: žiadny