Jeden z hlavné výhody PHP je spôsob, akým funguje s HTML formulármi. Kľúčom je, že každý prvok formulára je automaticky sprístupnený vašim programom PHP. Pre detailné informácie pozrite si časť o používaní formulárov v PHP. Tu je príklad HTML formulára:

Príklad #1 Najjednoduchší HTML formulár

Tvoje meno:

Tvoj vek:

Na tejto forme nie je nič zvláštne. Toto je normálny HTML formulár bez špeciálnych značiek. Keď používateľ vyplní formulár a klikne na tlačidlo Odoslať, zavolá sa stránka action.php. Tento súbor môže obsahovať niečo ako:

Beispiel #2 Vykresľovanie údajov formulára

Ahoj, .
Vámrokov.

Ukážkový výstup z tohto programu:

Ahoj Sergey. Máte 30 rokov.

Ak neberiete do úvahy kúsky kódu s htmlspecialchars() a (int), princíp fungovania tohto kódu by mal byť jednoduchý a jasný. htmlspecialchars() zaisťuje, že „špeciálne“ znaky HTML sú správne zakódované, aby sa na vašu stránku nevložil škodlivý kód HTML alebo Javascript. Vekové pole, o ktorom vieme, že musí byť číslo, môžeme jednoducho previesť celé číslo, ktorý vás automaticky zbaví nechcených postáv. PHP to tiež dokáže automaticky s rozšírením filtra. Premenné $_POST["name"] a $_POST["age"] za vás automaticky nastaví PHP. Predtým sme používali superglobálnu hodnotu $_SERVER, ale tu používame aj superglobálnu položku $_POST, ktorá obsahuje všetky údaje POST. Všimni si spôsob odoslania(metóda) nášho formulára je POST. Ak by sme použili metódu GET, potom by naše informácie z formulára boli v superglobálnom $_GET. Prípadne môžete použiť premennú $_REQUEST, ak je zdroj údajov irelevantný. Táto premenná obsahuje kombináciu údajov GET, POST a COOKIE.

pred 15 rokmi

Podľa špecifikácie HTTP by ste mali použiť metódu POST, keď používate formulár na zmenu stavu niečoho na strane servera. Ak má napríklad stránka formulár umožňujúci používateľom pridávať vlastné komentáre, ako je tento tu, formulár by mal používať POST, čo je dôvod, prečo tieto stránky nie sú uložené v záložkách ani vo vyrovnávacej pamäti.

Metódu GET by ste mali použiť vtedy, keď váš formulár niečo získava zo servera a nie vlastne zmeniť čokoľvek. Napríklad formulár pre vyhľadávací nástroj by mal používať GET, pretože vyhľadávanie na webovej lokalite by nemalo meniť nič, čo by klienta mohlo zaujímať, a ukladanie výsledkov dotazu vyhľadávacieho nástroja do medzipamäte je rovnako užitočné ako pridávanie záložiek do vyrovnávacej pamäte alebo ukladanie statickej stránky HTML do vyrovnávacej pamäte.

pred 2 rokmi

Stojí za to objasniť:

POST nie je bezpečnejšie ako GET.

Dôvody pre výber GET verzus POST zahŕňajú rôzne faktory, ako je zámer požiadavky ("odosielate" informácie?), veľkosť požiadavky (existujú limity dĺžky URL adresy a parametre GET sa odosielajú v URL) a ako jednoducho chcete akciu zdieľať – napríklad vyhľadávanie Google je GET, pretože uľahčuje kopírovanie a zdieľanie vyhľadávacieho dopytu s niekým iným jednoduchým zdieľaním adresy URL.

Bezpečnosť sa tu berie do úvahy len kvôli skutočnosti, že GET je jednoduchšie zdieľať ako POST. Príklad: nechcete, aby GET posielal heslo, pretože používateľ môže zdieľať výslednú adresu URL a neúmyselne odhaliť svoje heslo.

GET a POST sú však rovnako ľahko zachytené dobre umiestnenou škodlivou osobou, ak nenasadíte TLS/SSL na ochranu samotného sieťového pripojenia.

Všetky formuláre odoslané cez HTTP (zvyčajne port 80) sú nezabezpečené a dnes (2017) nie je veľa dobrých dôvodov na to, aby verejná webová stránka nepoužívala HTTPS (čo je v podstate HTTP + Transport Layer Security).

Ako bonus, ak používate TLS, minimalizujete riziko, že vaši používatelia dostanú kód (AD) do vašej návštevnosti, ktorý ste tam nevložili vy.

V tejto lekcii sa dozvieme o funkcii mail(), na príklade tvorby formulárov spätná väzba v PHP s následným odoslaním prijatých údajov poštou.

Na tento účel vytvoríme dva súbory - format.php a mail.php. Prvý súbor bude obsahovať iba formulár s poľami pre vstup užívateľa. Vo vnútri štítku formulár- tlačidlo "Odoslať" a atribút akcie, čo sa týka psovoda - mail.php, práve k nemu sa po stlačení tlačidla pristupuje k údajom z formulára "Odoslať". V našom príklade sa údaje formulára odošlú na webovú stránku s názvom "/mail.php". Táto stránka obsahuje skript pre PHP ktorý spracováva údaje formulára:


Údaje formulára sa odosielajú metódou POST(spracované ako $_POST). $_POST je pole premenných odovzdaných aktuálnemu skriptu prostredníctvom metódy POST.

Nižšie môžete vidieť obsah súboru format.php, ktorých polia si na niektorom webe vypĺňa sám používateľ. Všetky polia na zadávanie údajov musia mať atribút názov, hodnoty si predpisujeme sami na základe logiky.




Formulár spätnej väzby v PHP s odoslaním poštou


Formulár spätnej väzby v PHP







Zanechajte správu:
Tvoje meno:



Email:

Telefónne číslo:

Správa:

Textová oblasť môže obsahovať neobmedzený počet znakov -->







Takto vyzerá formulár vizuálne v prehliadači.

Ďalej napíšte kód súboru mail.php. Vymýšľame názvy pre samotné premenné. AT PHP premenná začína znakom $ , za ktorým nasleduje názov premennej. Textová hodnota premenná je uzavretá v úvodzovkách. Pomocou premenných sa obsah formulára odosiela na e-mail administrátora jednoduchým dosadením názvu prvku formulára - hodnota v hranatých zátvorkách názov.

$to=" [chránený e-mailom]"; // email príjemcu údajov z formulára
$tema = "Kontaktný formulár PHP"; // predmet prijatého emailu
$message = "Vaše meno: ".$_POST["meno"]."
";//priraďte hodnotu získanú z formulára meno=názov do premennej
$message .= "E-mail: ".$_POST["e-mail"]."
"; //získané z formulára meno=e-mail
$message .= "Telefónne číslo: ".$_POST["telefón"]."
"; //získané z tvaru meno=telefón
$message .= "Správa: ".$_POST["správa"]."
"; //získané z formulára meno=správa
$headers = "MIME verzia: 1.0" . "\r\n"; // hlavička zodpovedá formátu plus znaku nového riadku
$headers .= "Typ obsahu: text/html; charset=utf-8" . "\r\n"; // označuje typ odosielaného obsahu
mail($to, $tema, $správa, $hlavičky); //odošle hodnoty premenných na e-mail príjemcu
?>

Takže údaje z poľa $_POST budú odovzdané príslušným premenným a odoslané na poštu pomocou funkcie pošty. Vyplňte náš formulár a stlačte tlačidlo Odoslať. Nezabudnite uviesť svoj e-mail. List prišiel okamžite.

JavaScript je vo vašom prehliadači zablokovaný. Povoľte JavaScript pre túto stránku!

Práca s formulármi

HTML formuláre sa používajú na odosielanie údajov od používateľa webovej stránky na server. PHP poskytuje množstvo špeciálnych nástrojov na prácu s formulármi.

Preddefinované premenné

PHP má množstvo preddefinovaných premenných, ktoré sa nemenia, keď všetky aplikácie bežia v určitom prostredí. Nazývajú sa tiež premenné prostredia alebo premenné prostredia. Odrážajú nastavenia prostredia webového servera Apache, ako aj informácie o požiadavke. tento prehliadač. Je možné získať hodnoty adresy URL, reťazca dopytu a ďalších prvkov požiadavky HTTP.

Všetky preddefinované premenné sú obsiahnuté v asociatívnom poli $GLOBALS. Toto pole okrem premenných prostredia obsahuje aj globálne premenné definované v programe.

Príklad 1

Zobrazenie poľa $GLOBALS $value) echo "\$GLOBALS[\"$key\"] == $hodnota
"; ?>

V dôsledku toho sa na obrazovke zobrazí zoznam všetkých globálnych premenných vrátane premenné prostredia. Najčastejšie používané sú:

VariabilnéPopisObsah
$_SERVER["HTTP_USER_AGENT"]Meno klienta a verziaMozilla/5.0 (kompatibilný; Googlebot/2.1; +http://www.google.com/bot.html)
$_SERVER["REMOTE_ADDR"]IP adresa144.76.78.3
getenv("HTTP_X_FORWARDED_FOR")Interná IP adresa klienta
$_SERVER["REQUEST_METHOD"]Spôsob vyžiadania (GET alebo POST )GET
$_SERVER["QUERY_STRING"]Pri požiadavke GET sa kódované údaje odovzdali spolu s adresou URL
$_SERVER["REQUEST_URL"]Úplná adresa klienta vrátane reťazca dopytu
$_SERVER["HTTP_REFERER"]URL stránky, z ktorej bola žiadosť odoslaná
$_SERVER["PHP_SELF"]Cesta k spustiteľnému programu/index.php
$_SERVER["SERVER_NAME"]doménawebovej stránky
$_SERVER["REQUEST_URI"]Cesta/php/php_form.php

Spracovanie vstupu používateľa

Obslužný program vstupu PHP možno oddeliť od textu HTML obsahujúceho vstupné formuláre alebo umiestniť na rovnakú stránku.

Príklad 2

Príklad spracovania vstupu

"method="post">

Číslo karty:

Nie je tu žiadne tlačidlo prenosu dát, pretože. formulár pozostávajúci z jedného poľa sa odošle automaticky po stlačení klávesu .

Pri spracovaní prvku s výberom s viacerými hodnotami, aby ste získali prístup ku všetkým vybratým hodnotám, musíte k názvu prvku pridať pár hranatých zátvoriek. Ak chcete vybrať viacero položiek, podržte stlačený kláves Ctrl.

Príklad 3.1

Zoznam

PRÍKLAD 3.1 VÝSLEDOK:

Príklad 3.2

Zoznam spracovania zo súboru ex1.htm

    "; foreach ($Item ako $value) echo"
  • $value"; echo"
"; ?>

Príklad 4. Akceptovanie hodnôt zo začiarkavacích políčok

$v) ( if($v) echo "Poznáte programovací jazyk $k!
"; else echo "Neovládate programovací jazyk $k.
"; } } ?>
" method="post"> Aké programovacie jazyky poznáte?
PHP
Perl

PRÍKLAD 4 VÝSLEDOK:

Príklad 5

"; ?>
"method="post">

Je možné spracovávať formuláre bez toho, aby ste sa starali o skutočné názvy polí.

Na to môžete použiť (v závislosti od spôsobu prenosu) asociatívne pole $HTTP_GET_VARS alebo $HTTP_POST_VARS . Tieto polia obsahujú páry názov/hodnota pre každý prvok odoslaného formulára. Ak je vám to jedno, môžete použiť asociatívne pole $_REQUEST.

Príklad 6

Spracovanie ľubovoľného vstupu bez ohľadu na spôsob prenosu $value) echo "$kľúč == $hodnota
"; ?>

Príklad 7. Spracovanie kliknutia na tlačidlo pomocou operátora „@“.

">

Pomocou funkcie header(), odoslaním hlavičky "Umiestnenie" prehliadaču, môžete používateľa presmerovať na novú stránku.

Napríklad:

Prenos súboru na server. Nahrajte súbor. Nahrať

PHP vám umožňuje posielať súbory na server. HTML formulár na odoslanie súboru musí obsahovať argument enctype="multipart/form-data" .

Okrem toho musí mať formulár skryté pole s názvom max_file_size pred poľom na kopírovanie súboru. Toto skryté pole by malo obsahovať maximálnu veľkosť prenášaného súboru (zvyčajne nie viac ako 2 MB).

Samotné pole prenosu súboru je normálny prvok INPUT s argumentom type="file" .

Napríklad:

"method="post">

Po nahratí súboru na server dostane jedinečný názov a uloží sa do dočasného adresára. Úplná cesta k súboru sa zapíše do globálnej premennej, ktorej názov sa zhoduje s názvom poľa na prenos tohto súboru. Okrem toho PHP ukladá niektoré ďalšie informácie o odovzdanom súbore v iných globálnych premenných:

Príklad 8

Spracovanie preneseného súboru "; echo "name: ".$_FILES["userfile"]["name"]."
"; echo "veľkosť: ".$_FILES["userfile"]["veľkosť"]."
"; echo "type: ".$_FILES["userfile"]["type"]."
"; } ?>
"method="post">

Príklady nahrávania súborov na server

Ak sa vyskytnú problémy s konverziou nahraného súboru serverom, symbol s kódom 0x00 nahradený medzerou (znak s kódom 0x20), pridajte do súboru httpd.conf z adresára Apache (/usr/local/apache) nasledujúce riadky.

CharsetRecodeMultipartForms vypnuté