[ tep3a @ 12.09.2004. 18:02 ] @
dakle problem je sto ne kapiram bas princip sesije i kolacica :(

hocu da kada se user registruje, u njegov komp ubacim cookie koji ce mu omoguciti da se kasnije automatski loguje na sajt(kao na ovom forumu).

e sad, gde tu dolazi sesija a gde cookie?? u cookie cu verovatno da upisem podatke
o useru koje ce kasnije moj server da procita i uloguje usera automatski(ili mu popuni username a on sam unese pass)..znaci da ga prepozna..

ako sve ovo moze sa kolacicem cemu onda sluzi sesija??

pliz nemojte da mi kazete da pogledam na google jer sam gledao , poskidao razne knjige, citao, ali eto ocu da pitam nekog da mi to na srpskom pojasni..

ako imate neki primer u php-u dobro bi mi dosao...

unapred mnogo hvala!
[ boccio @ 12.09.2004. 18:46 ] @
Da ne filozofiram puno - osnovna razlika je u tome sto se kolaci snimaju na hard disk, dok se sesija "drzi" za browser dok je otvoren (a moze i krace, uz pomoc $_SESSION["alive"]). Glavni problem sa kolaci(ci)ma je sto dosta korisnika ne dozvoljava snimanje istih na hard, tako da to moras imati na umu kad budes projektovao svoj login sistem. Predpostavljam da je to odgovor na pitanje "ako sve ovo moze sa kolacicem cemu onda sluzi sesija??".

Ako zelis da ti sajt "pamti" korisnika, kao ES, najprostije ti je da stavis poruku pored tog famoznog "remember me" boxa - tipa "you have to accept cookies".

A sto se tice tvog pitanja iz naslova teme, odgovor bi mogao biti - i jedno i drugo :) Posebno ako uzmes u obzir da sessija prvo svoj ID pokusava da snimi kao cookie, pa ako ne uspe, onda ga prenosi kroz URL...

Citat:
tep3a:
pliz nemojte da mi kazete da pogledam na google jer sam gledao , poskidao razne knjige, citao, ali eto ocu da pitam nekog da mi to na srpskom pojasni..


hm...sve zavisi sta ukucas na guglu...si probao ovako?


i na prvu loptu dobijes sasvim lepo i prosto objasnjenje:
Citat:

Difference between session and cookie?

The key difference would be cookies are stored in your hard disk whereas a session aren't stored in your hard disk. Sessions are basically like tokens, which are generated at authentication. A session is available as long as the browser is opened.

Sessions are popularly used, as the there is a chance of your cookies getting blocked if the user browser security setting is set high...
[ Zekica @ 12.09.2004. 21:37 ] @
Mislim da to nije najbolje objašnjenje razlike između sesija i kukija.

Pošto je HTTP protokol request/response protokol (znači web browser zahteva neku stranicu, i web server mu je vrati), pojavila se potreba da se neke stvari čuvaju između odvojenih zahteva nekoj (ili nekim) stanicama na web serveru, kako bi on mogao da pruži korisniku prilagođeniju stranicu korisniku pri sledećim zahtevima koje korisnik zahteva.

Cookie je podatak (ili više podataka) koji se čuvaju u web browser-u između zahteva nekoj stranici ili grupama stranica za koje je taj cookie važeći. Znači jedna stranica postavi cookie, koje ostale stranice (uglavnom serverske skripte poput PHP-a), mogu da čitaju, i tako daju korisniku prilagođeniju stranicu. (Recimo google koristi cookije za čuvanje podešavanja kao što je jezik).

Cookie ima i svoja ograničenja, jedan cookie ne može biti veći od 2kb, i jedan sajt ne može imati više od 20 cookie-a, tako da je maksimalna količina podataka koju jedan sajt može sačuvati u web browseru 40kb (barem je ovo teoretski tako).

Često ovo nije dovoljno prostora za čuvanje svih podataka koji su bitni za sajt, a još češća je situacija da autor stranica/skripti ne želi da korisnik vidi podatke koji su sačuvani, a ovo se ne može uraditi uz pomoć kukija.

Sesije su jedan od načina rešavanja gore navedenih problema. Naime, sesija je skup podataka koji se čuvaju na serveru, i imaju određeno vreme trajanja (na primer 1h). Web browseru se samo šalje identifikacija te sesije (grupe podataka), kako bi druga strana/skripta znala kojim podatcima da pristupi. U PHP-u, sesije se čuvaju u fajlovima (svaka sesija, poseban fajl), a web browseru se šalje samo ime fajla u kome se na serveru čuvaju podatci.

Ta identifikacija sesije se može čuvati u cookie-ju, što je po meni bolje rešenje, ali kako svi web browseri ne prihvataju kukije, postoji i alternativni način, a to je da se ta identifikacija prosledi sledećoj stranici kao deo URL-a.

Tako da se sesije i kukiji, razlikuju po tome što se sesije čuvaju na serveru, a kukiji u web browseru, i da sesije skoro uvek imaju kraće vreme isteka od kukija, tako da se veoma retko mogu koristiti za trajnije čuvanje podataka (recimo o korisniku)...

Nadam se da sam bio dovoljno jasan.
[ dinke @ 12.09.2004. 22:54 ] @
Jako interesantna tema, verujem da je mnogim ljudima pojam sesije ili cookie-a nejasan. Zekica je dosta lepo objasnio neke stvari. Ja ću dodati jos samo malo :)

Dakle, zamisli sledeći script:
Code:

<?php
session_start();

$_SESSION['foo'] = "Foo";
$_SESSION['foo_1'] = "Foo_1";
...
$_SESSION['foo_n'] = "Foon_n";
?>


Ovaj session_start() kreira jedinstveni (unique) session id koji se sastoji od 32 karaktera, a vrednosti ovih foo promenljivih smešta negde na serveru (po defaultu u fajl u /tmp diru ali to se može podesiti, tako da se recimo to čuva u bazi, shared memoriji i sl).
E sad, obzirom da je http stateless protokol, jedini način da server prilikom sledećeg requesta restaurira vrednosti tih foo promenljivih jeste da mu nekako pošalješ id te sesije. Za to postoje 2 načina, da se session_id šalje preko query stringa (www.site.com/index.php?SESSIONID=12345...) ili preko cookie-a.

Što se cookie-a tiče, nema tu nikakve magije. Recimo gornji script bi ti vratio nešto ovako u okviru response headera:
Code:

X-Powered-By: PHP/4.3.3 
Set-Cookie: PHPSESSID=63b4628a86b2615437a2c012ca239d0e; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 


Ovo Set-Cookie: ... u headeru kao posledicu ima smeštanje cookie na klijentov hdd. Nakon toga prilikom svakog novog requesta koji pravi klijentov browser, vrednost cookie se šalje kroz request, tj. http request header izgleda otprilike ovako:

Code:

Accept: text/xml,application/xml,application/xhtml+xml,text/html;...
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Language: en-us,en;q=0.5
Cache-Control: max-age=0
Connection: keep-alive
Cookie: PHPSESSID=cc38f1b2fc8d858d53fc64d443fd5a71
Host: localhost
Keep-Alive: 300
User-Agent: mozilla/5.0 (x11; u; linux i686; en-us; rv:1.7) gecko/20040626 firefox/0.9.1 


Dakle, klijentov browser šalje vrednost PHPSESSID id-a preko cookie-a koja je zapisana na klijentov hdd. Na serveru se na osnovu toga restauriraju sve promenljive sesije koje su zapisane negde na serveru (hdd,baza,shared memory ...).

I naravno, po meni najpotpunije objašnjenje php sesija možeš naći u manualu, dakle http://www.php.net/session

Pozdrav

[ tep3a @ 13.09.2004. 16:19 ] @
eee sad je jasnije...ok, uradio sam jos malo pretrage po forumu i malo mi je jasnije...

koliko sam skontao sesija je bolja(funkcionalnija) ali i malo slozenija od cookie-a?

da li je meni ( za moj projekt za faks) dovoljno da koristim cookie samo da server prepozna usera i uloguje ga automatski i da mu omoguci da posalje komentar meni na server (upise se u Mysql bazu) i ja znam od koga je stiglo, nista vise...

ili moram da koristim sesiju??

sta bi vi uradili?
[ u_m @ 14.09.2004. 08:10 ] @
jos jedno pitanjce:

ja koristim sesije/kukije na svom sajtu za mobilne telefone i primjetio sam da kad neki telefon ima podrsku za kukije, linkovi na sajtu su bez id-a sesije, dok onih koji nemaju tu podrsku id se ubacuje u link.

nisam mnogo podesavao u php.ini fajlu, ali problem je sta jedna od ove dvije kombinacije ne radi, a nikako ne mogu da detektujem koja.

i jos jedno pitanjce:

kako da podesim trajanje sesije direktno iz skripte, u php.ini je 180min, a meni treba da sesije koje su neazurirne u posljednjih 5min brise.
[ Shinhan @ 15.09.2004. 12:47 ] @
Za trajanje sesija ja mislim da mozes da iskoristis .htaccess
session.gc_maxlifetime = 300

Mislim da je to dovoljno.
[ u_m @ 15.09.2004. 20:35 ] @
ne moze tako

a ini_set, ne mogu nikako da nadjem format komande da ovu operaciju, pokusacu sad sa ovom promjenjivom koju si predlozio da ubacim u .htaccess

evo sta sam ubacio u php kod: ini_set("session.gc_maxlifetime","120");

i.. nece, ne radi, ne brise stare sesije, ne ..

ja koristim funkcije koje preusmjeravaju cuvanje sesija u mysql bazu, sesije se update-uju svakih 60sec, ali se ne brisu stare sesije.
[ Shinhan @ 16.09.2004. 09:13 ] @
Pa el si onda probao da radis to rucno? Stavis TIMESTAMP u session
tabelu, i samo proveravas da li je proslo vise od 5 minuta?
[ Dr:Lun @ 16.09.2004. 12:53 ] @
Jel postoji nesto tipa cookie za "Authentication" metod zastite kod Apache Web servera?

Da li je mozda nesto tog tipa moguce ukljuciti u Mozilla Web Browseru?
[ u_m @ 16.09.2004. 19:38 ] @
mislio sam da postoji automatsko provjeravanje vaznosti sesije, u svakom slucaju hvala
[ OmerBeg @ 18.09.2004. 12:11 ] @
Citat:
tep3a: eee sad je jasnije...ok, uradio sam jos malo pretrage po forumu i malo mi je jasnije...

koliko sam skontao sesija je bolja(funkcionalnija) ali i malo slozenija od cookie-a?

da li je meni ( za moj projekt za faks) dovoljno da koristim cookie samo da server prepozna usera i uloguje ga automatski i da mu omoguci da posalje komentar meni na server (upise se u Mysql bazu) i ja znam od koga je stiglo, nista vise...

ili moram da koristim sesiju??

sta bi vi uradili?


definitivno koristi sessiju, jer sta ces sa korisnicima koji se prijavljuju sa nekog
zajednickog racunara ? Da li ce se uvijek samo prvi prijaviti u sistem a ostali
korisnici automatski se prijavljuju na njegovo ime ?

Cookie mozes samo koristiti ako zelis da neke "JAVNE" informacije budu zapamcene na korisnikovom racunara nikako za bilo sta senzibilnije.