PHP sesijos kintamieji
Kai dirbate su kokia nors programa, jūs ją atidarote, darote kažkokius pakeitimus ir uždarote. Visi šie veiksmai vyksta jūsų sesijos metu. Kai dirbate su kokia nors programa, kompiuteris visada žino kas jūs toks, kada atidarėte programą, ką su ja veikiate ir kada ją uždarėte. Internete yra viena problema: web serveris nežino kas jūs, nes HTTP adresas yra dinamiškas.
PHP sesijos išsprenžia šią problemą, nes ji leidžia saugoti informaciją apie vartotoją serveryje. Deja, sesijos kintamuosiuose esanti informacija yra laikina ir bus ištrinta po to, kai vartotojas išeis iš svetainės. Jei norite informaciją saugoti ilgesnį laiką, siūlau naudoti duomenų bazes (pvz.: MySql)
Sesijos veikia tokiu principu: kiekvienas lankytojas gauna savo unikalų ID ir visi kintamieji yra saugomi pagal tą ID serveryje. ID yra saugomas arba sausainėlyje arba URL adrese. Norint užtikrinti didesni saugumą, reiktų saugoti ne tik ID, bet taip pat tikrinti ir kitus parametrus - ip adresą, naršyklę ir kt.
Pradedam PHP sesiją
Prieš naudojant PHP sesijų kintamuosius, jūs turite ją pradėti kiekviename dokumente, kuriame naudosite sesijų kintamuosius.
Pastaba: session_start() funkcija turi būti PRIEŠ betkokį HTML kodą.:
- Kodas: Pasirinkti visus
<?php session_start(); ?>
<html>
<body>
<p>Sveikas pasauli!</p>
</body>
</html>
Šis kodas užregistruos vartotojo sesiją serveryje ir suteiks jam unikalų ID. Dabar jau galite naudoti sesijos kintamuosius.
Sesijos kintamieji
Teisingiausias būdas išsaugoti ir gauti sesijos kintamuosius yra naudojantis PHP sesijos masyvą $_SESSION:
- Kodas: Pasirinkti visus
<html>
<body>
<?php
// sukuriame sesijos kintamąjį 'vardas' ir suteikiam jam reikšmę 'Lukas'
$_SESSION['vardas'] = 'Lukas';
// panaudojame session kintamajį
print "Vartotojo vardas yra: " . $_SESSION['vardas'];
?>
</body>
</html>
Naršyklėje matysime:
- Kodas: Pasirinkti visus
"Vartotojo vardas yra: Lukas
Pavyzdys
Šiame pavyzdyje sukursime paprastą puslapio peržiūrų skaičiavimo skriptą. Funkcija isset(); patikrina ar kintamasis 'perziuros' yra jau sukurtas. Jei jau sukurtas, tiesiog padidiname vienetu jo reikšmę, jei nesukurtas - sukuriame ir priskiriame jam reikšmę lygią vienam:
- Kodas: Pasirinkti visus
<?php
session_start();
if(isset($_SESSION['perziuros']))
$_SESSION['perziuros'] = $_SESSION['perziuros']+1;
else
$_SESSION['perziuros'] = 1;
print "peržiūros = ". $_SESSION['perziuros'];
?>
Pastaba: kadangi if ciklas turi tik vieną vykdomą sakinį, riestinių skliaustų dėti nėra būtina. Aišku, jei uždesite - nepakenks :)
Sesijos sunaikinimas
Jei norite ištrinti viską, ką išsaugojote kaip sesijos kintamąjį, galite naudoti visiems kintamiesiems išvalyti skirtą funkciją unset(); arba būtent sesijoms skirtą session_destroy();
Su unset(); taip pat galite išvalyti bet kokią vieną reikšmę:
- Kodas: Pasirinkti visus
<?php
unset($_SESSION['perziuros']);
?>
arba išvalyti visas sesijos reikšmes:
- Kodas: Pasirinkti visus
<?php
unset($_SESSION);
?>
Kitas būdas yra tiesiog pilnai sunaikinti sesiją iškviečiant session_destroy(); funkciją:
- Kodas: Pasirinkti visus
<?php
session_destroy();?>
@webrealityteam.info