Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

sesstion_start() na svakoj strani

[es] :: PHP :: sesstion_start() na svakoj strani

[ Pregleda: 1209 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ratepcivortep

Član broj: 281135
Poruke: 8
*.dynamic.sbb.rs.



Profil

icon sesstion_start() na svakoj strani11.04.2011. u 21:42 - pre 158 meseci
Samouk sam programer i sad sam tu negde u PHP-u i procitao sam ove teme sto postoje na temu sesija , i sta me zanima , krajnje trivijalo pitanje - zasto na pocetku svake php strane moram da stavim session_start() da bi ta strana videla varijablu cija je vrednost postavljena recimo na nekoj prvoj strani , jel inace mi prijavljuje gresku ! Nekako bi mi logicno bilo kad sam jednom rekao session_start() , da to vazi dok god session traje , a ja na svakoj strani moram da stavim session_start() , iako sam to vec uradio na prvoj strani i tamo dodelio vrednost nekoj promenljivoj $_SESSION['bla_bla_bla'] , da bi mogao da vidim tu neku varijablu $_SESSION['bla_bla_bla'] na nakoj drugoj strani ? Jel ima to neke veze sa konfigurisanjem php-a?
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: sesstion_start() na svakoj strani11.04.2011. u 22:03 - pre 158 meseci
session.auto-start
Banned - Not available
 
Odgovor na temu

ratepcivortep

Član broj: 281135
Poruke: 8
*.dynamic.sbb.rs.



Profil

icon Re: sesstion_start() na svakoj strani12.04.2011. u 01:49 - pre 158 meseci
Hvala!
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: sesstion_start() na svakoj strani12.04.2011. u 07:23 - pre 158 meseci
Citat:
ratepcivortep: Nekako bi mi logicno bilo kad sam jednom rekao session_start() , da to vazi dok god session traje , a ja na svakoj strani moram da stavim session_start() , iako sam to vec uradio na prvoj strani i tamo dodelio vrednost nekoj promenljivoj $_SESSION['bla_bla_bla'] , da bi mogao da vidim tu neku varijablu $_SESSION['bla_bla_bla'] na nakoj drugoj strani ? Jel ima to neke veze sa konfigurisanjem php-a?


To ima veze sa cinjenicom da je HTTP stateless protokol.

Citat:

Wikipedia - HTTP session state:

HTTP is a stateless protocol. A stateless protocol does not require the server to retain information or status about each user for the duration of multiple requests. For example, when a web server is required to customize the content of a web page for a user, the web application may have to track the user's progress from page to page. A common solution is the use of HTTP cookies. Other methods include server side sessions, hidden variables (when the current page is a form), and URL-rewriting using URI-encoded parameters, e.g., /index.php?session_id=some_unique_session_code.


To znaci da kad browser posalje request serveru, server pozove PHP ili neku drugu server-side tehnologiju da generise tu stranu (ukliko je dinamicka strana u pitanju), vrati stranu browseru i zaboravi na tog korisnika (na taj browser).
Kao sto artikal sa wikipedije kaze, da bi mogao da pratis korisnika koji se krece kroz tvoju web aplikaciju moras da koristis npr sesije. E sad, posto je HTTP stateless, svaki put kada PHP dobije zahtev od klijenta on ce da pogleda ili u GET ili u COOKIE (u zavisnosti od podesavanja, ja preferiram cookie) da bi nasao parametar sa odredjenim imenom (PHPSESSID po defaultu, mada moze i trebalo bi da se promeni - pogledaj session.name ini podesavanje i session_name() funkciju) i ukoliko taj parametar ne postoji, ili sesija na koju on pokazuje ne postoji zapocece novu sesiju (i promeniti vrednost tog parametra, koji ce na kraju obrade biti poslat klijentu), ukoliko postoji i sesija sa tim id-em postoji nastavice je.

session_start() radi upravo taj proces - na osnovu podesavanja trazi session-id parametar u zahtevu koji je klijent poslao i zapocinje novu ili nastavlja postojecu sesiju. Posto je HTTP stateless (cim posalje klijentu odgovor, zaboravi na tog klijenta) session_start() mora biti pozvano na svakoj strani (kojoj trebaju podaci iz sesije).

Kao sto je Br@nkoR pomenuo, session.auto-start se moze koristiti, ali ja ga licno nikad ne koristim. Ukoliko aplikaciju dizajniras tako da imas samo jedan entry fajl tj da svi zahtevi idu preko tog fajla (index.php obicno) onda samo na jednom mestu imas session_start() i svu logiku vezanu za hendlovanje sesija (ja recimo volim da validiram session id na osnovu nekog parametra, recimo ip ili user-agent string ali to nije uvek izvodljivo...).

Takodje, ukoliko nemas one-file-to-rule-them-all setup mozes jednostavno svu tu session logiku da stavis u zaseban fajl (recimo session.php) i onda na svakoj strani radis include 'session.php'...
 
Odgovor na temu

[es] :: PHP :: sesstion_start() na svakoj strani

[ Pregleda: 1209 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.