Seje in obrazci v PHP
Recimo, da imamo dve PHP datoteki. V
datoteki test1.php postavimo obrazec, ki
vpraša uporabnika dve številki:
<form method="GET">
<input name="num1">
<input name="num2">
<input type="submit">
</form>
V tej isti datoteki postavimo kodo za obdelavo obrazca. V tej kodi bomo podatke iz vnosnih polj zapisali v sejo:
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Pomemben odtenek: v datoteki mora biti koda za obdelavo obrazca postavljena pred sam obrazec. Zakaj: ker v tej kodi delamo s sejo, in zato ne sme biti nobenega izpisa na zaslon pred tem.
Sedaj v datoteki test2.php poiščimo
vsoto števil, shranjenih v seji:
<?php
if (!empty($_SESSION)) {
echo $_SESSION['num1'] + $_SESSION['num2'];
}
?>
V kakšnem zaporedju naj vse to
deluje? Najprej uporabnik obišče
stran test1.php, izpolni obrazec
in pritisne na gumb. Po tem spet pride
na test1.php, vendar že z oddanimi
podatki obrazca. Pri tem pride v pogoj,
v katerem zapišemo podatke obrazca v sejo.
Nato mora uporabnik ročno obiskati
stran test2.php - in tam bo videl
vsoto vnešenih števil.
Lahko se vprašate: zakaj tako komplicirati? Saj
bi lahko obrazec takoj poslali na stran
test2.php. Bistvo je v tem, da je v tem
primeru priročnost v tem, da sta sam obrazec in koda
njegove obdelave nameščena na isti strani.
To seveda ni vedno priročno, vendar včasih
je potrebno.
Na eni strani z uporabo obrazca vprašajte uporabnika priimek, ime in starost. Zapišite te podatke v sejo. Pri obisku druge strane izpišite te podatke na zaslon.