Kompiuteriai Svetainės kūrimas

PHP - Sesijos

        
Vartotojo avataras

Arturas.S

Lankytojas
 
Pranešimai: 4
Vilnius

 300.40 Lt

Standartinė » 2009 Spa 17, 00:49

PHP sesijos kintamieji yra skirti tam, kad saugotų informaciją apie vartotoją. Dažniausiai naudojami, kai reikia padaryti svetainėje prisijungimo modulį. Sesijos kintamieji yra pasiekiami visuose dokumentuose, kuriuose ji yra pradėta.

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

--------------------------------------


Vartotojo avataras

Kaukoliux

Dalyvis
 
Pranešimai: 114
Šiauliai

 4,237.55 Lt

Standartinė » 2009 Gru 30, 01:33

Idomu butu suzinoti, kodel sukurus sesija:

$_SESSION['vardas'] = '$vartotojas';

(pries tai buvusiame lange vartotojas uzpildo forma su savo vardu, jis cia ir paimamas i sesija)

Po to parodyti jo varda galima paprastai, taciau jei as is to pacio pc prisijungiu su dar vienu , kitokiu vartotoju, naujasis pakeicia senasi. Gal kokiu iseiciu? Randant laisvo laiko ka nors vandau su php, taciau noriu testuoti vartotoju tarpusavio veiksmus, tarkim vienas kitam zinuciu siuntima , ar kitokius veiksmus, ir neiseina dvieju vienu metu pasijungti, naudoju kita buda iskeliu vartotojus per formas su <hidden> laukais, ir jie nepakeicia vienas kito, tai vienintelis budas kuris iseina. Na girdejau kad ir su "kukiais" galima, taciau su jais ir man pakeicia naujasis vartotojas senaji :P

Vartotojo avataras

Pelių Džemas.

Misteris Linksmai
 
Pranešimai: 3093
Vilnius

 1,967.81 Lt

Standartinė » 2009 Gru 30, 10:05

Tai kad visur kiek pastebėjau taip yra kad naujas pakeičia senajį.

THa KeinuX

Forumo gyventojas
 
Pranešimai: 1200
Sun-City

 0.00 Lt

Standartinė » 2009 Gru 30, 10:46

Nes taip ir turi būt, nori, kad nepakeistų, junkis kita naršykle ir per proxy.

Vartotojo avataras

Pelių Džemas.

Misteris Linksmai
 
Pranešimai: 3093
Vilnius

 1,967.81 Lt

Standartinė » 2009 Gru 30, 12:03

Nebūtina proxy.

THa KeinuX

Forumo gyventojas
 
Pranešimai: 1200
Sun-City

 0.00 Lt

Standartinė » 2009 Gru 30, 12:24

Bet tada esi tikrai garantuotas, kad nepasikeis :)

Vartotojo avataras

Kaukoliux

Dalyvis
 
Pranešimai: 114
Šiauliai

 4,237.55 Lt

Standartinė » 2009 Gru 30, 18:55

Aisku, na dekui uz informacija, dekingas :)

Vartotojo avataras

vilkas159

Lankytojas
 
Pranešimai: 19

 605.26 Lt

Standartinė » 2010 Vas 24, 17:27

kas cia yra? nesuprantu :(



Kompiuteriai Svetainės kūrimas





 
Dabar prisijungę

Šiuo metu prisijungę 0 narių :: 0 registruotų, 0 slaptų ir 0 svečių
Daugiausia vartotojų (812) buvo 2020 Bal 28, 22:08

Vartotojai naršantys šį forumą: Registruotų vartotojų nėra ir 0 svečių