PHP a formuláre. HTML formuláre PHP prepínač stránok

Na webových stránkach často nájdete stránky s HTML formulármi. Webové formuláre predstavujú pohodlný spôsob, ako získať informácie od návštevníkov vašich webových stránok. Príkladom toho je kniha návštev, ktorá poskytuje spätnú väzbu návštevníkom a vývojárom stránok. Formuláre sú vhodné aj pre vývojárov stránok pri vývoji CMS, čo im umožňuje zachovať hlavnú vlastnosť stránky – relevantnosť. Tento článok sa zaoberá základmi vytvárania formulárov HTML, ich spracovania a spôsobov prenosu údajov z obrazovkových formulárov do skriptov PHP.

1) Vytvorte jednoduchý formulár

Tagy

A
definujte začiatok a koniec formulára. Značka počiatočného formulára
obsahuje dva atribúty: akcie A metóda. Atribút action obsahuje adresu URL skriptu, ktorý je potrebné zavolať na spracovanie skriptu. Atribút metóda informuje prehliadač, aký typ požiadavky HTTP má použiť na odoslanie formulára; možné hodnoty POST A GET.

Komentujte

Hlavným rozdielom medzi metódami POST a GET je spôsob prenosu informácií. Pri metóde GET sa parametre prenášajú cez panel s adresou, t.j. v podstate v hlavičke HTTP požiadavky, kým pri metóde POST sa parametre prenášajú cez telo HTTP požiadavky a nijako sa neprejavia v adresnom riadku.

$text = nl2br($_POST["môj text"]);
?>

Úloha: Predpokladajme, že potrebujete vytvoriť rozbaľovací zoznam s rokmi od 2000 do 2050.
Riešenie: Na spracovanie formulára potrebujete vytvoriť HTML formulár s prvkom SELECT a PHP skriptom.

Diskusia:

Najprv vytvoríme dva súbory: form.html A action.php. V súbore form.html bude obsahovať html formulár s rozbaľovacím zoznamom. Okrem toho môžu byť hodnoty v zozname špecifikované dvoma spôsobmi:

I. Manuálne zadávanie údajov:

II. Zadávanie údajov cez slučku:

Ako vidíte, druhý príklad so slučkou je kompaktnejší. Myslím, že k tomuto formuláru nie je potrebné poskytovať handler skript, pretože je spracovaný úplne rovnako ako textové pole, t.j. hodnoty zoznamu možno získať zo superglobálneho poľa $_POST.

Popis:

Vytvorme HTML formulár na odoslanie súboru na server.




Tento html formulár obsahuje prvok prehliadať, čím sa otvorí dialógové okno na výber súboru na nahranie na server. Keď stlačíte tlačidlo "Preniesť súbor", súbor sa odovzdá skriptu obsluhy.

Potom musíte napísať skript obsluhy action.php. Pred napísaním obslužného programu sa musíme rozhodnúť, do ktorého adresára skopírujeme súbor:

if(isset($_FILES [ "môj súbor" ])) // Ak súbor existuje
{
$katalog = "../obrazok/" ; // Náš katalóg
if (is_dir($catalog)) // Ak takýto adresár existuje
{
$myfile = $_FILES [ "myfile" ][ "tmp_name" ]; // Dočasný súbor
$myfile_name = $_FILES [ "môj súbor" ][ "meno" ]; // Názov súboru
if(! copy ($myfile, $catalog)) echo "Chyba pri kopírovaní súboru". $myfile_name // Ak kopírovanie súboru zlyhalo
}
else mkdir (../image/" ); // Ak takýto adresár neexistuje, vytvoríme ho
}
?>

Komentujte

Ak dôverujete používateľom pri nahrávaní akýchkoľvek súborov na váš server, musíte byť mimoriadne opatrní. Útočníci môžu do obrázka alebo súboru vložiť „zlý“ kód a odoslať ho na server. V takýchto prípadoch musíte prísne kontrolovať sťahovanie súborov.

Tento príklad ukazuje vytvorenie adresára a skopírovanie súboru do tohto adresára na server.

Chcel by som tiež demonštrovať príklad s prvkom začiarkavacie políčko. Tento prvok sa mierne líši od ostatných prvkov tým, že ak nie jedným z prvkov začiarkavacie políčko'a nie je vybratá, potom superglobálna premenná $_POST vráti prázdnu hodnotu:


Modrá
čierna
biely

if (!empty($_POST [ "moja farba" ])) echo $_POST [ "moja farba" ]; // Ak je vybratý aspoň 1 prvok
inak echo "Vybrať hodnotu";
?>




Ak máte ďalšie otázky alebo vám niečo nie je jasné, vitajte u nás

Nie je žiadnym tajomstvom, že najbežnejším spôsobom interakcie HTML stránky s webovou stránkou je formulár. Formulár (teda prvok HTML tvorený značkou formulára) využívajú aj bezplatné e-mailové služby, elektronické obchody a mnohé ďalšie typy stránok.

Spracovanie jednoduchých formulárov pomocou PHP je jednoduché. Z času na čas však vzniká potreba spracovať formulár obsahujúci viacero polí rovnakého typu, napriek tomu, že ich počet sa môže meniť v širokom rozmedzí a ich počet nie je vopred známy. Pre takéto prípady PHP poskytuje spracovanie polí rovnakého typu ako pole hodnôt.


Pozrime sa bližšie na možnosti pre rôzne typy polí.

Textové polia

V tomto článku sú textové polia definované ako prvky vytvorené vstupnými značkami s parametrom typu text a značkou textarea. Najjednoduchšie je zorganizovať spracovanie formulára pozostávajúceho z niekoľkých takýchto polí. Nižšie uvedený zoznam zobrazuje označenie HTML pre takýto formulár.






Ako môžete vidieť zo zoznamu, názvy prvkov formulára sú z pohľadu PHP prvkami poľa. Preto PHP skript, ktorý spracuje tento formulár, bude považovať všetky textové polia tohto formulára za jedno pole. K jednotlivým prvkom je možné pristupovať pomocou indexu alebo enumerovať pomocou zoznamu a jednotlivých príkazov, ako v nasledujúcom príklade.

n"; ?>

Prepínače

V tomto článku sú začiarkavacie políčka prvky vytvorené vo vstupných značkách s parametrom type nastaveným na začiarkavacie políčko . Formulár na použitie premenlivého počtu „prepínačov“ je zostavený presne rovnakým spôsobom. Upozorňujeme, že výber konkrétnej hodnoty prepínača (teda hodnoty vlastnosti value) nie je dôležitý. Príklad je uvedený v zozname nižšie:






Spracovanie takéhoto formulára sa však líši od spracovania opísaného pre textové polia. V tomto prípade je potrebné zistiť, či návštevník stránky zapol ten či onen prepínač. Ak je povolené, potom príslušný prvok poľa existuje, ak nie, potom chýba. Nasledujúci zoznam je príklad PHP skriptu, ktorý vytlačí povolené prepínače:

Prepínače

Pred popisom spracovania prepínačov je potrebné pripomenúť, ako fungujú. Podstatou prepínačov (prvkov vytvorených vstupnými tagmi s hodnotou parametra typu rovnajúcu sa rádiu ) je, že výberom jedného tlačidla používateľ automaticky odznačí ďalšie tlačidlo z rovnakej množiny. Tlačidlá sa kombinujú do sady veľmi jednoducho: všetky tlačidlá v súprave majú rovnaký názov.

Ale hodnoty (to znamená parametre hodnôt) tlačidiel v súprave sú odlišné. A hodnota vybraného tlačidla s názvom sady bude odoslaná na stránku. Rovnako ako v prípade textových polí a prepínačov by mali byť názvy sád prepínačov formátované ako názvy prvkov poľa v PHP. Príklad takéhoto formulára je uvedený v nasledujúcom zozname:

// prvá skupina tlačidiel
// druhá sada tlačidiel
// tretia sada tlačidiel

Spracovanie prepínačov kombinuje myšlienky používania textových polí a prepínačov pri spracovaní. Ak autor html stránky nenastavil predvolenú hodnotu a používateľ nevybral konkrétne tlačidlo v skupine prepínačov, potom tento prvok nebude v poli (ako v prípade prepínačov).

Ak je tlačidlo vybraté, príslušný prvok poľa bude obsahovať svoju hodnotu (ako v prípade textových polí). Nižšie je uvedený príklad zoznamu, ktorý spracováva formulár s viacerými skupinami prepínačov.

n"; ?>

Pri spracovaní zložitých tvarov teda nie je nič zložité.

Všetky jazyky sveta majú slovo „prepnúť“
a iba v ruštine - „prepnúť“!
Michail Zadornov

Dnes si povieme niečo o takomto syntaxovom prvku PHP, ako prepínače. Nemal by sa zamieňať so značkou HTML , ktorý vytvára aj prepínače. takže,

príkaz prepnúť

Úloha: v závislosti od toho, čo si používateľ vyberie, zobrazte požadovanú možnosť. Pozrime sa na kód:

Príklad 1. HTML stránka s formulárom:

Sociálny prieskum

Zadajte svoju známku v ruštine:

A tu je kód obsluhy:

Príklad 2. Obsluha formulára (súbor cup6.php):

ak (! $skóre) (
echo();
) elseif ($score == 1 ) (
echo ("Hrôza!");
) elseif ($score == 2 ) (
echo ("Zlyhanie %-(" );
) elseif ($score == 3 ) (
echo ("Ud...");
) elseif ($score == 4 ) (
echo("Dobre");
) elseif ($score == 5 ) (
echo("Skvelé!");
) inak (
ozvena ( "Zaujímavé hodnotenie...");
}
?>

Myslím, že ste všetci ľahko pochopili kód a pochopili, ako to funguje. Vo všeobecnosti je tento kód správny a nie sú v ňom žiadne chyby (zdá sa...), ale je to veľmi nepohodlné: pri mnohých podmienkach je dosť ťažké sledovať, kde sa všetko nachádza. Čo robiť? Teraz budeme potrebovať prepínač.

Prepínač vyzerá takto:

Príklad 3. Vzhľad prepínača:

prepínač (výraz) (
hodnota prípadu 1:
// príkazy, ktoré sa vykonajú, ak výraz = hodnota1
prestávka; // nie je potrebné
case value2:
// príkazy, ktoré sa vykonajú, ak výraz = hodnota2
prestávka; // nie je potrebné
...
predvolene:
// príkazy, ktoré sa vykonajú, ak sa nenájde
// žiadne zhody
prestávka; // nie je potrebné
}

Ako celý tento blok funguje:

  1. Hodnota výrazu sa vypočíta.
  2. Hodnota výrazu sa porovnáva s hodnotou 1 . Ak sú rovnaké, vykoná sa kód umiestnený za príkazom case value1:
  3. Ak sa hodnota výrazu nerovná hodnote 1, porovná sa s hodnotou 2, 4 atď.
  4. Ak neboli nájdené žiadne zhody, vykoná sa kód v predvolenom bloku.

Predvolený blok je voliteľný: možno ho vynechať.

Command break(); po každom bloku kódu je potrebný, takže po vykonaní kódu sa všetky nasledujúce prípady jednoducho preskočia.

Teraz zmeňme kód druhého príkladu, aby bol pohodlnejší! Napríklad takto:

Príklad 4. Upravený kód z príkladu 2 (súbor cup6.php):

prepnúť ($score) (
prípad 0:
ozvena ( “Stále musíte zadať hodnotenie...”);
prestávka;
prípad 1:
echo ("Hrôza!");
prestávka; prípad 2:
echo ("Zlyhanie %-(" );
prestávka;
prípad 3:
echo ("Ud...");
prestávka;
prípad 4:
echo("Dobre");
prestávka;
prípad 5:
echo("Skvelé!" );
prestávka;
predvolene:
ozvena (
"Zaujímavé hodnotenie...");
}
?>

Páči sa ti to. Jednoduché a pohodlné. Výsledky tejto práce sú znázornené na obrázkoch:

Predtým potom

Pripojenie

Často je oveľa pohodlnejšie rozdeliť kód na niekoľko častí a zobraziť ich na správnych miestach. Na zahrnutie obsahu jedného súboru do iného súboru môžeme použiť dva príkazy: require(); a zahŕňajú();

vyžadovať()

Vystúpenie tímu:

Príklad 6. Vzhľad príkazu require():

vyžadovať("názov súboru" );

Pred spustením skriptu PHP nájde všetky príkazy require(); A nahradí ich (príkazy) obsahom zadaného súboru.

K výmene dôjde iba raz pred spustením skriptu, takže nebudete môcť zahrnúť príkaz require(); do tela cyklu!

Súbor, ktorý zahrniete do príkazu require(); môže obsahovať PHP-kód. Tento kód bude vykonaný.

zahrnúť()

Vystúpenie tímu:

Príklad 7. Vzhľad príkazu include():

include("názov súboru");

include() príkaz; vloží a spustí obsah zadaného súboru a to sa stane počas vykonávania skriptu vždy, keď sa stretne s príkazom inlcude(); .

Napriek zjavnej podobnosti príkazy require(); a zahŕňajú(); sú vážne odlišné: príkaz require(); sa vykoná raz pred spustením skriptu a inlcude(); zakaždým, keď sa vyskytne v kóde a môžete jednoducho zadať príkaz inlcude(); do cyklov.

Ako to môže pomôcť v živote: takmer na každom webe sú časti stránky, ktoré sa na celom webe nemenia – napríklad hlavička (hlavička) webu a päta (spodok) webu. Aby ste ich netlačili znova na každú stránku, mali by ste ich vložiť do dvoch samostatných súborov (napríklad header.php a footer.php) a zahrnúť ich podľa potreby.

Kód takejto stránky môže vyzerať napríklad takto:

Príklad 8. Pripojenie hlavičky a spodnej časti stránky z externých súborov:

vyžadovať("hlavička.php" ); // tu je text aktuálnej stránky
vyžadovať("päta.php" );
?>

Použitie require() v tomto príklade je vhodnejšie, pretože tieto súbory zahrnieme iba raz.

require_once() a inlcude_once()

Ak sa potrebujete uistiť, že určitý súbor je zahrnutý v kóde iba raz, potom namiesto require(); a zahŕňajú(); treba použiť require_once(); a vyžaduj_raz();

Pozrite si príklady:

Príklad 9. Dvojité použitie include_once():

include_once("top.php" );
// tu je nejaký kód include_once("top.php" );
?>

V predchádzajúcom príklade bude súbor top.php zahrnutý do kódu stránky iba raz, napriek tomu, že v kóde sú dva príkazy.

To je všetko...

Zdá sa, že to je všetko, čo som vám dnes chcel povedať. Budú nejaké problémy s PHP- napíšte mi, pomôžem!

Ako domácu úlohu: urobte si jednoduchú kalkulačku. Ako tip tu je obrázok pre vás:

A tu je ďalšia vec: oplatí sa vôbec nastaviť takúto „domácu úlohu“?

V tomto návode vytvoríme jednoduchý prepínač šablón dizajnu pomocou PHP premenných a CSS.

Podobných prepínačov je veľa a lekcie na túto tému som už párkrát prekladal. Dizajn môžete úplne zmeniť pomocou špeciálnych PHP skriptov, alebo môžete použiť JavaScript. V tomto prípade skripty jednoducho zmenia predlohy štýlov. Čo ak potrebujeme zmeniť len niekoľko štýlov na stránke? Z tohto dôvodu nevytvoríme niekoľko rôznych súborov CSS.

Našťastie z tejto situácie existuje východisko. Pomôžu nám s tým premenné PHP, ktoré zmenia niektoré riadky v šablóne štýlov a podľa toho sa zmení aj náš dizajn.

V prvom rade musíme vytvoriť PHP súbor pre obsah našej stránky. Urobíme to veľmi jednoduché, ale môžete vyvinúť zložitejšie schémy aplikácií. Upozorňujeme, že naša šablóna štýlov má príponu .php a nachádza sa v priečinku CSS.


< html >

PHP premenné v ukážke CSS
< meta http -equiv="Content -Type" content="text /html; charset = utf-8" />










Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud cvičenie ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Okrem sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.





Vytvoril som nejaký obsah s malou navigáciou, ktorá nám umožní zmeniť šablónu (v našom prípade sa zmení hlavička).

Použijeme reťazec dotazu na zmenu aktuálnej témy odovzdaním hodnoty názvu do rovnakého súboru PHP. Potrebujeme tiež, aby si skript pamätal, aký dizajn práve používame a zostal na celej stránke.

Pred doctype vložte nasledujúci kód:

session_start();


$_SESSION["šablóna"] = $_GET["šablóna"];

) elseif (isset($_SESSION["šablóna"])) (
$template = "?template=".$_SESSION["šablóna"];
) inak (
$template = "";
}
?>

Takže tu je to, čo robí tento kód. Keďže používame relácie, najprv musíme reláciu spustiť. Ďalej skontrolujeme, či reťazec dotazu obsahuje hodnotu premennej šablóny. Ak nie, potom nastavíme premennú relácie na hodnotu šablóny. Ďalej vytvoríme lokálnu premennú s reťazcom, ktorý pridáme do umiestnenia CSS súboru. Umožní nám odovzdať názov šablóny, ktorú chceme použiť v súbore PHP, vytvoriť CSS štýly.

Teraz môžeme vytvoriť prepínač šablón. Na identifikáciu požadovaného vzoru používame čísla 1-3:

prepnúť tému:
1
2
3

Musíme tiež zmeniť umiestnenie súboru PHP, ktorý je zodpovedný za generovanie CSS.

Teraz sme pripravení vytvoriť súbor PHP, ktorý bude zodpovedný za vytvorenie našej šablóny. Hneď na začiatku súboru musíme prehliadaču oznámiť, že tu budú obsiahnuté štýly CSS. Pomôže nám s tým nasledujúci riadok kódu:

Hlavička("Typ obsahu: text/css; znaková sada: UTF-8");

Teraz môžete tento súbor jednoducho použiť ako normálnu šablónu so štýlmi s možnosťou vkladania premenných PHP. Otvárajú sa vám tak skvelé možnosti nielen na zmenu vzhľadu stránky, ale aj na dynamickú výmenu obsahu.

Keďže máme len 3 možné vzory, musíme sa uistiť, že je možné použiť iba tieto 3 číslice. Ak sa zrazu niekto pokúsi zadať inú hodnotu v reťazci dopytu, pred očami sa mu otvorí predvolená šablóna (v našom prípade je to „1“).

$počet šablón = 3;
if (isset($_GET["šablóna"])) (
$template = $_GET["šablóna"];
if ((!is_numeric($template)) || ($template > $numberoftemplates) || ($template< 0)) {
$template = 1;
) inak (
$template = round($template);
}
) inak (
$template = 1;
}

Teraz máme lokálnu premennú $template, ktorá obsahuje číslo šablóny, ktorá sa má použiť. Kvôli prehľadnosti to môžete skontrolovať tak, že ho použijete ako komentár ku kódu CSS:

Echo "/*====== použitá šablóna: ".$template." ======*/";

Potom si môžete pozrieť súbor style.php a v zdrojovom kóde vidieť nasledujúci nápis: „/*====== použitá šablóna: 1 ======*/“. Ak v prehliadači pristupujete k súboru style.php?template=2, bude tam iná hodnota.

Keďže nevytvárame samostatnú šablónu štýlov pre každú šablónu, rozdiely medzi našimi návrhmi musíme označiť iba v jednom súbore. Tieto zmeny môžeme zadať do poľa:

$css = pole(
"header-background" => pole(
1 => "url(../images/header-bg-1.jpg) no-repeat",
2 => "url(../images/header-bg-2.jpg) no-repeat",
3 => "url(../images/header-bg-3.jpg) no-repeat"
),
"header-h1-color"=> pole(
1 => "#fff",
2 => "#fff",
3 => "#666"
),
"header-h1-font"=> pole(
1 => "tučné normálne 35px Helvetica, Arial, bezpätkové",
2 => "tučné normálne 35px Trebuchet MS, Arial, bezpätkové",
3 => "normálny normálny 35px Georgia, serif"
);

Ako môžete vidieť, pridelil som 3 prvky v poli pre každý selektor CSS.

Teraz už len musíme nahradiť na správnom mieste:

Pozadie:;

a v závislosti od šablóny budeme mať iný obrázok na pozadí.

To je všetko, čo potrebujete. Použite tieto konštrukcie v celom súbore. Týmto spôsobom môžete nahradiť veľa rôznych prvkov na stránke. Úplný zoznam štýlov:

* {
okraj:0;
výplň:0;
}
telo (
font-size:.8em;
pozadie:#F3F4F9;
font-family:Arial;
text-align:center;
}
#obal (
šírka: 990px;
okraj:0 auto;
text-align:left;
}
#nav (
padding:10px 0;
šírka: 990px;
pretečenie:auto;
}
#logo (
float:left;
}
#prepínač (
float:right;
šírka: 170px;
text-align:right;
padding:45px 20px 0 0;
}
#rozpätie prepínača (
float:left;
padding:6px 10px 0 0;
}
#prepínač a (
displej:blok;
float:left;
padding:4px 8px;
border:1px solid #ccc;
pozadie:#eee;
margin:0 0 0 2px;
}
#switcher a:hover (
pozadie:#fff;
}
#header (
jasné:obaja;
pozadie:;
výška: 206px;
}
#header h1 (
text-align:right;
padding:155px 25px 0 0;
farba:;
font:;
}
#col1 (
šírka: 450px;
float:left;
margin:20px 0 0 0;
}
#col2 (
šírka: 450px;
float:right;
margin:20px 0 0 0;
}

To je všetko! Užite si to!