HTML formos
Formos elementas
Forma yra labai svarbus HTML elementas. Formų dėka naudotpjas gali nusiųsti duomenis į serverį tolimesniam apdorojimui.Forma gali turėti keletą atributų, tačiau dažniausiai naudojami trys:
- Atributas
action
- skirtas nurodyti veiksmui, kuris bus atliktas po formos duomenų pateikimo. Įprastai duomenys siunčiami į kitą failą, kuris randasi tame pačiame serveryje ir apdoroja gautus duomenis. - Atributas
method
- skirtas nurodyti kokiu metodu bus pateikiami duomenys. Metodų yra keletas, tačiau dažniausiai naudojami POST ir GET. - Atributas
enctype
- skirtas nurodyti kokiu būdu bus užkoduoti siunčiami duomenys. Pagal nutylėjimą šio atributo reikšmė yra"application/x-www-form-urlencoded"
, bet jos nebūtina nurodyti. Tačiau siunčiant per formą failus, svarbu nurodyti šio atributo kitą reikšmę"multipart/form-data"
, kitu atveju nepavyks išsaugoti ir/ar apdoroti siunčiamą failą.
<input>
lauką, kurio tipas būtų file
:
<form action="/action_page.php" method="post" enctype="multipart/form-data">
<label for="myfile">Select a file:</label>
<input type="file" id="myfile" name="myfile"><br><br>
<input type="submit">
</form>
Šiuo atveju galima bus pasirinkti vieną failą.Norint įkelti kelis failus, reiktų papildomai nurodyti atributą
multiple
:
<form action="/action_page.php" method="post" enctype="multipart/form-data">
<label for="myfile">Select a file:</label>
<input type="file" id="myfile" name="myfile" multiple><br><br>
<input type="submit">
</form>
POST metodas
POST metodo ypatumai:- Siunčiami duomenys nėra matomi naudotojui, juos galima pamatyti tik naudojant programavimo įrankius, naršyklės plėtinius ar specializuotas programas.
- Siunčiamų duomenų kiekis nėra ribojamas, tačiau ribojimai gali būti nustatyti serverio nustatymuose.
- Galima siųsti failus.
POST metodo kodo pavyzdys
Susikurkite kokį nors HTML failą ir PHP failą pavadinimuexample.php
. Į HTML failą įdėkite šį kodą:
<form method="post" action="example.php" enctype="multipart/form-data">
<label for="vardas">Vardas</label>
<input type="text" name="vardas" id="vardas"><br>
<label for="pavarde">Pavardė</label>
<input type="text" name="pavarde" id="pavarde"><br>
<label for="failas">Failas</label>
<input type="file" name="failas" id="failas">
<input type="submit" value="Siųsti">
</form>
Į PHP failą įdėkite šį kodą:
<?php
print_r($_POST);
echo "<br>";
print_r($_FILES);
echo "<br>";
$target_file = "uploads/".basename($_FILES["failas"]["name"]);
if (move_uploaded_file($_FILES["failas"]["tmp_name"], $target_file)) {
echo $_POST['vardas']." ".$_POST['pavarde']." send a file ".$_FILES["failas"]["name"];
} else {
echo "Sorry, there was an error uploading your file.";
}
GET metodas
GET metodo ypatumai:- Siunčiami duomenys yra matomi URL adrese, naršyklės istorijoje ir kt.
- Nuoroda negali būti ilgesnė nei 2048 simboliai.
- Negalima siųsti failų.
1. GET metodo kodo pavyzdys
Susikurkite kokį nors HTML failą ir PHP failą pavadinimuexample.php
. Į HTML failą įdėkite šį kodą:
<form method="get" action="example.php">
<label for="vardas">Vardas</label>
<input type="text" name="vardas" id="vardas"><br>
<label for="pavarde">Pavardė</label>
<input type="text" name="pavarde" id="pavarde"><br>
<input type="submit" value="Siųsti">
</form>
Į PHP failą įdėkite šį kodą:
<?php
print_r($_GET);
echo "<br>";
echo "Your name is ".$_GET['vardas']." ".$_GET['pavarde'];
2. GET metodo kodo pavyzdys
Į HTML failą įdėkite šią formą:<form method="get" action="http://www.google.com/search">
<input type="text" name="q"/>
<input type="submit" value="search" />
</form>
P.S. $_POST
, $_GET
, $_FILES
yra globalūs PHP masyvai. PHP kalba turi ir daugiau globalių masyvų.
Formos laukų atributai
Yra trys svarbūs formos laukų atributai:hidden
- padaro lauką nematomu, tačiau duomenis galima nuskaityti.readonly
- duomenys matomi, jų negalima įvesti, tačiau juos galima nuskaityti.disabled
- duomenys matomi, tačiau nei įvesti, nei nuskaityti jų negalima.
Atributas | Matomas formoje | Galima įvesti | Galima nuskaityti |
---|---|---|---|
hidden |
- | - | + |
readonly |
+ | - | + |
disabled |
+ | - | - |