Aj ja cu pokusat objasnit.
Necu ulaziti u to sto je session cemu sluzi i sl, kad pitas predpostavit cu da znas o cem se radi
Objasnit cu na primjeru logiranja usera.
Zbog jednostavnosti i mojih ogranicenih predavackih sposobnosti zamislimo session kao jedan program spremljen u php datoteku.
Amo pocet, prva funkcija, kojom zapocinje cijela prica jeste
session_register($ssname);
Sa njom zapocinjemo, registriramo session, dakle stvorili smo session, on/a sada postoji na serveru i u stanju je cekanja dok je posebnom funkcijom ne aktiviramo/pokrenemo.(Uzmimo ovo kao pisanje php koda, napisali smo kod, spremili ga u datoteku, uploadali na server i sada samo cekamo da korisnik dodje i u svoj browser upise path do te datoteke).
Varijabla
$ssname jeste ime naseg sessiona i moze biti proizvoljno, recimo $ssname="ttc";
(isto kao da smo onaj session/program sa pocetka teksta nazvali ttc) Znaci stvorili smo session koji se "zove" ttc. za sada u session nismo spremili nikakve varijable, stvorili smo ga i nazvali ttc.
Zelimo li u njega spremiti neku varijablu to cemo uciniti sljedecim programskim odsjeckom
$_SESSION[$ssname] = "username";
Prevedimo ovo na "naški"
U session ttc spremi username. Sada imamo stvoren session i imamo varijablu koju on provlaci cijelo vrijeme dok smo na nekom serveru.
Da bi startali stvoreni session koristimo funkciju
session_start();
Nakon poziva ove funkcije zapoceli smo nas session, znaci pokrenuli smo ga( Isto kao da smo pokrenuli program). Mala napomena, funkcija session_start(); mora biti pozvana u prvoj/drugoj liniji skripte, znaci prije bilo koje druge funkcije ili html koda, dakle
<?PHP
session_start();
.
.
.
Da vidimo gdje se trenutno nalazimo?
Stvorili smo session, nazvali ga ttc i u njega pospremili username, sa session_start(); aktivirali smo session i sada je on aktivan na serveru. Cini li vam se da ovo za sada i nema nekog smisla odnosno prakticne upotrebe?
Kako cemo "upogoniti" nas proizvod?
Sljedecom funkcijom session_is_registered($ssname); provjeravamo dali je stvorena session ttc.
Sljedecim programskim odsjeckom stvari ce biti malo jasnije.
if (session_is_registered($ssname) === true)
{
Session je stvoren obavi koristan posao
}
else {
session nije stvoren, idi na registraciju....
Spomenut cu jos dvije funkcije povezane sa sessionom i odloginiranjem
Uzmimo da smo se gore napisanim uspjeli logirati, obavili smo svoj posao i sada se zelimo odlogirati. To cemo uciniti na sljedeci nacin, funkcijom
session_unset ();
oslobodit cemo, ocistiti, unistiti sve session varijable koje smo prenosili u sessionu, dakle ovime cemo iz sessioa obrisati "username"; Ovime smo pocistili varijable no nas session je jos na serveru i jos je aktivan, funkcijom
session_destroy();
cemo unistiti sve podatke vezane uz session.
Eto, cini se da smo dobili sto smo htjeli
Napisat cu ovo gore u php kodu...
session.php<?PHP
session_start(); //sjecamo se ove funkcije? ;)
$ssname='ttc'; //Ime sessiona postavljamo u ttc
function login($username,$password){ //funkcija login
include_once("db.php");//konekcija na bazu, recimo da su u bazi spremljeni username i pasword
if (session_is_registered($ssname)===true){ //sprecava duplo logiranje
echo 'Vec si logiran';
return false;
}
else{
if(isset($ssname)&&isset($username)&&isset($password)){ //ako su postavljeni svi parametri
$ok=0;
$show=@mysql_query(SELECT * FROM korisnici);//idemo u bazu i trazimo postoji li korisnik sa podacima predanim funkciji login
while ($ok!=1&&$row=mysql_fetch_array($show)){
if(($username==$row[$user])&&md5($password)==$row[$pass]){
session_register($ssname); //ako se pronadju odgovarajuci podaci, stvori session
$_SESSION[$ssname] = $row[$user];//username se sprema
//Login uspjesan
$ok=1;
return true;
}
}
if($ok!=1){ // u slucaju da u bazi nismo pronasli podatke predane funkciji login
echo 'Pogresno korisnicko ime ili lozinka. Molim pokusajte ponovno.';
return false;
}
}
else{
return false;}
}
}
function logoff(){
if (session_is_registered($ssname)===true){
session_unset();
session_destroy();
if(!session_is_registered($ssname)){
echo "Odlogirali ste se";
return true;
}
else{
echo 'Greska, ne mogu vas odlogirat';
return false;}
}
else{
echo 'Nisi jos ni logiran';
return false;
}
}
?>
neka_stranica.php<?php
session_start();
include("session.php");
if (session_is_registered($ssname) === true)
{
echo "Dobro dosli $_SESSION[$ssname]"
}else {
echo "Niste autorizirani da vidite ovu stranicu";
}
?>
Evo nadam se da sam bio jasan, ne iskljucujem mogucnost gresaka u gornjem tekstu/kodu pa bi molio kolege koji uoce neki propust ili neku glupost koju sam napisao da ukazu na istu.