Istunnot ja lomakkeet PHP:ssä
Oletetaan, että meillä on kaksi PHP-tiedostoa. Laita tiedostoon
test1.php lomake, joka kysyy
käyttäjältä kahta numeroa:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
Samaan tiedostoon laitamme lomakkeen käsittelykoodin. Tässä koodissa kirjoitamme syöttökenttien tiedot istuntoon:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Tärkeä vivahde: tiedostossa lomakkeen käsittelykoodin tulee olla ennen itse lomaketta. Miksi: koska tässä koodissa työskentelemme istunnon kanssa, eikä siksi saa olla minkäänlaista tulostusta näytölle ennen tätä.
Etsitään nyt tiedostossa test2.php
istuntoon tallennettujen numeroiden summa:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
Missä järjestyksessä tämän kaiken pitäisi
toimia? Ensin käyttäjä menee
sivulle test1.php, täyttää lomakkeen
ja painaa nappia. Tämän jälkeen hän päätyy taas
sivulle test1.php, mutta nyt lähetetyillä
lomaketiedoilla. Samalla hän päätyy ehtoon,
jossa kirjoitamme lomaketiedot istuntoon.
Sitten käyttäjän tulee manuaalisesti mennä
sivulle test2.php - ja siellä hän näkee
syöttämiensä numeroiden summan.
Saattaa kysyä: miksi tehdä näin monimutkaisesti? Eihän
voisi vain lähettää lomaketta suoraan sivulle
test2.php. Asia on siinä, että tässä
tapauksessa mukavuus on siinä, että itse lomake ja sen
käsittelykoodi sijaitsevat samalla sivulla.
Tämä ei tietenkään aina ole kätevää, mutta joskus
sitä tarvitaan.
Kysy samalla sivulla lomakkeen avulla käyttäjältä sukunimi, etunimi ja ikä. Tallenna nämä tiedot istuntoon. Kun siirryt toiselle sivulle, näytä nämä tiedot näytöllä.