Sesijos ir formos PHP
Tarkime, kad turime du PHP failus. Failelyje
test1.php patalpinkime formą, kuri paklausia
vartotojo dviejų skaičių:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
Šiame pačiame faile patalpkime formos apdorojimo kodą. Šiame kode įrašysime įvestų duomenis į sesiją:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Svarbus niuansas: faile formos apdorojimo kodas turi būti prieš pačią formą. Kodėl: nes šiame kode mes dirbame su sesija, o tai reiškia, kad negali būti jokios išvesties į ekraną prieš tai.
Dabar faile test2.php suraskime
į sesiją išsaugotų skaičių sumą:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
Kokia seka visa tai turėtų
veikti? Pirmiausia vartotojas užėjęs į
pushlapį test1.php, užpildo formą
ir paspaudžia mygtuką. Po to vėl pateks
į test1.php, bet jau su išsiųstais
formos duomenimis. Tuo metu jis pateks į sąlygą,
kurioje mes įrašome formos duomenis į sesiją.
Tuomet vartotojas turi rankiniu būdu užėiti į
pushlapį test2.php - ir ten jis pamatys
įvestų skaičių sumą.
Galite paklausti: kam taip komplikuoti? Juk
galima buvo iš karto išsiųsti formą į pushlapį
test2.php. Esmė ta, kad šiuo atveju
patogumas yra tas, kad pati forma ir jos
apdorojimo kodas yra talpinami viename puslapyje.
Tai, žinoma, patogu ne visada, bet kartais
būna reikalinga.
Viename puslapyje, naudojantis forma, paklauskite vartotojo pavardės, vardo ir amžiaus. Įrašykite šiuos duomenis į sesiją. Užėjus į kitą pushlapį, atvaizduokite šiuos duomenis ekrane.