Kurs: PHP programiranje Materijali vezani uz ovu lekciju: - Test cookie i session - Cookie i Session (PDF dokument) Veoma često je neophodno da kada korisnik prelazi sa jedne strane na drugu određene informacije budu prosleđene. Pomoću PHP-a, prosleđivanje informacija je moguće na nekoliko načina:
Dodavanje informacije na URLOvo je najjednostavniji način prosleđivanja informacija. Informacija se prosleđuje kao par promenljiva=vrednost. Na primer:
Znak ? razdvaja URL od vrednosti koje se prosleđuju. Na ovaj način je moguće proslediti i više vrednosti, pri čemu se parovi razdvajaju znakom &. Na primer:
Svaka informacija prosleđena na ovaj način je dostupna preko niza $_GET ili $_REQUEST. Prosleđivanje informacija na ovakav način je jednostavno, ali ima i svojih nedostataka:
Smeštanje informacija pomoću cookie-jaCookie je mala količina informacija u obliku promenljiva=vrednost koju web čitači snimaju lokalno na korisnikov računar. Nakon snimanja, PHP skript može da pročita i upotrebi ovu informaciju. Najveći problem kod korišćenja cookie-ja predstavlja činjenica da ih sam korisnik kontroliše. Na primer, moguće je da ih obriše sa računara ili čak da uopšte ne dozvoli web čitaču da ih snimi na disk. Tada PHP program koji se oslanja na podatke iz cookie-ja neće funkcioniati. Cookie se snima pomoću funkcije setcookie(). Na primer:
Ovako sačuvana informacija ostaje na korisnikovom računaru dok god on ne napusti sajt. Sve informacije sačuvane pomoću cookie-ja su dostupne unutar PHP programa preko niza $_COOKIE. Na primer, jedna linija koda bi mogla da izgleda ovako:
Informacije sačuvane pomoću cookie-ja su dostupne tek kada korisnik pređe na sledeću stranu ili kada ponovo učita tekuću. Ukoliko je potrebno da informacija ostane sačuvana duži vremenski period, moguće je snimiti je na sledeći način:
Cookie možete da obrišete tako što poništite njenu vrednost. Na primer:
Funkcija setcookie() ima jedno veliko ograničenje. Može biti upotrebljena samo pre nego što je bilo kakav tekst poslat čitaču. To znači da je nemoguće koristiti je u sredini skripta, nakon korišćenja naredbi echo.
Prosleđivanje informacija pomoću formeIako se HTML forma najčešće korise za prikupljanje podataka od korisnika, moguće ih je koristiti i za prosleđivanje informacija sa jedne strane na drugu. Na primer:
Ovakva forma prikazuje samo jedno dugme na kome piše "Next page". Kada korisnik pritisne ovo dugme informacija koja se nalazi u skrivenoj kontroli koju korisnik ne vidi na strani, se prosleđuje i postaje dostupna PHP skriptu preko promenljive $_POST["acct"].
Korišćenje sesijaSesija je vreme koje korisnik provede na jednom sajtu, tj. vreme od ulaska korisnika na neki sajt pa do njegovog napuštanja. Počevši od verzija 4.0, PHP omogućava manipulisanje informacijama u okviru sesije. Prvo se dodeljuje identifikacioni broj sesije i čuva se u PHP sistemskoj promenljivoj PHPSESSID. Sve vrednosti koje treba da budu sačuvane, čuvaju se u fajlu na serveru. Fajl dobija ime na osnovu ID broja sesije i smeša se u direktorijum određen pomoću session.save_path vrednosti u php.ini fajlu. Ovaj direktorijum mora da postoji da bi informacije mogle da budu snimljene. Prilikom prelaska sa strane na stranu, PHP prosleđuje broj sesije. Ukoliko je korisnik omogućio cookie-je, ovaj broj se prosleđuje pomoću cookie-ja. Sve vrednosti sačuvane tokom sesije se nalaze u $_SESSION nizu. Ukoliko je korisnik isključio cookie-je, broj sesije se prenosi preko URL-a ili preko skrivenog polja forme, ali samo ako je vrednost session.use_trans_id postavljena na 1 u okviru php.ini fajla. Otvaranje sesije Sesiju bi trebalo otvoriti na početku svake strane pomoću funkcije session_start(). Ova funkcija proverava da li već postoji dodeljen ID i ako postoji podešava vrednosti promenljive $_SESSION. Ukoliko ID broj nije dodeljen, kreira se novi i započinje nova sesija. Obzriom da mehanizam sesija koristi cookie-je, on ima i slična ograničenja. Zato je neophodno funkciju session_start() pozvati na početku skripta.
Zatvaranje sesije Sesija se zatvara pozivom funkcije session_destroy().
Korišćenje $_SESSION promenljive Određena informacija se snima unutar sesije na sledeći način:
Ova informacija će biti dostupna na svim stranama unutar jedne sesije.
|