php.hr
Dobrodošli, Gost. Molimo, prijavite se ili se registrirajte.
23.01.2025., 07:44
1878 Postova 1000 Tema 442 Članova
Najnoviji Član: medolino
php.hr  |  PHP & MySQL  |  PHP  |  Php Sessions :| « natrag naprijed »
 Str: [1]
Autor Tema: Php Sessions :|  (Posjeta: 3439 )
motion
Novi član
*
Offline Offline

Postova: 5


Profil
« : 03.11.2006., 20:53 »

Zbunjen sam sa php sessionsima, a želio bih naučiti ih koristiti, pogotovo u svrhu autorizacije korisnika na stranici.

Ako netko ima DOBAR, jednostavan i razumljiv tutorial sa primjerom koji radi, bio bih zahvalan ako bi ga objavio.

Još draže bi mi bilo da mi netko objasni to ovdje.na hrvatskom Wink

Hvala puno.
Evidentirano

feel the motion around you
ttc
Administrator
PHP Programer
*****
Offline Offline

Postova: 111



Profil WWW
« Odgovor #1 : 04.11.2006., 02:57 »

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 Wink
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
Kod: (php)
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
Kod: (php)
$_SESSION[$ssname] = "username";
Prevedimo ovo na "naški" Wink 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
Kod: (php)
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
Kod: (php)
<?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? Wink

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.
Kod: (php)
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 Wink

Uzmimo da smo se gore napisanim uspjeli logirati, obavili smo svoj posao i sada se zelimo odlogirati. To cemo uciniti na sljedeci nacin, funkcijom
Kod: (php)
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
Kod: (php)
session_destroy();
cemo unistiti sve podatke vezane uz session.

Eto, cini se da smo dobili sto smo htjeli Smile Napisat cu ovo gore u php kodu...


session.php

Kod: (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

Kod: (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. Wink
« Zadnja izmjena: 04.11.2006., 03:31 ttc » Evidentirano
c0dr3x
PHP Programer
***
Offline Offline

Postova: 133



Profil WWW
« Odgovor #2 : 04.11.2006., 10:22 »

daklen ja bi samo postavio jedan citat  Wink

Izvor citata

Citat:
Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for improved security and code readability. With $_SESSION, there is no need to use the session_register(), session_unregister(), session_is_registered() functions. Session variables are accessible like any other variables.

cheerz  Wink
Evidentirano
motion
Novi član
*
Offline Offline

Postova: 5


Profil
« Odgovor #3 : 04.11.2006., 13:47 »

 Shocked ttc, svaka čast, zahvaljujem se najljepše.
probat ću to izvježbat, istestirati i naučiti,
hvala ti puno...
Evidentirano

feel the motion around you
BlizZ
Novi član
*
Offline Offline

Spol: Muški
Postova: 7


Profil
« Odgovor #4 : 06.01.2007., 13:10 »

ma nije to teško.... ja sam isto koristio sessione u svom cms-u, samo nisam to toliko zapetljao.. Smile
napravio sam jedan session prolaz... kada je on 1 tada može gledat sve stranice i sve bude ok... ako je rezličit od  1 onda ga odvede na login... i sve je ok... nemam frke sa neki drugim ulazima sa strane ili takvo nešto... molim "stručnjake" da malo obrate pažnju na moj način da ukažu ako sam u nekom dijelu rada u krivu..
Evidentirano
 Str: [1]
php.hr  |  PHP & MySQL  |  PHP  |  Php Sessions :| « natrag naprijed »
    Skoči na: