Utisci korisnika

Kada sam na fakultetu polagala ispit iz Obrazovne tehnologije jedno od pitanja je bilo nastava na daljinu. Pojam, značenje, prednosti i nedostaci su mi bili poznati ali u isto vreme daleki, nedostižni…

"Ovo je pravi vid doškolovavanja za sve one koji nemaju uslova za redovno školovanje ili su prezauzeti. Nije teško za one koji hoce . Uz vas je i moj sin od 9 godina nesto naučio.…


Kompletna lista utisaka

Testiranje online

Arhitektura računara

Za one koji žele da znaju više.

Windows OS

Ovo bi svakako trebalo da probate.

Odnosi s javnošću

Koliko znate PR?

Pogledajte još neke od testova

Newsletter

Ukoliko želite da Vas redovno obaveštavamo o novostima sa Link eLearning sajta prijavite se na našu newsletter listu.

Ime:

Prezime:

Email:


Anketa

Arhiva anketa

BAZA ZNANJA


Kurs: PHP programiranje

Modul: Prosleđivanje podataka

Autor:

Naziv jedinice: Cookie i Session


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:

  • dodavanjem informacije na URL nove strane - ovaj metod je prikladan samo ako se radi o maloj količini informacija
  • smeštanje informacije pomoću cookie-ja
  • prosleđivanje informacije pomoću forme
  • korišćenje sesija

 

Dodavanje informacije na URL

Ovo je najjednostavniji način prosleđivanja informacija. Informacija se prosleđuje kao par promenljiva=vrednost. Na primer:

 <a href="process.php?godine=20" mce_href="process.php?godine=20">Sledeci</a> ili <form action="process.php?godine=20" method=POST>

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:

 <a href="process.php?godine=20&grad=Beograd" mce_href="process.php?godine=20&grad=Beograd">Sledeci</a>

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:

  • informacije su vidljive svima, pa je time smanjena sigurnost
  • sam korisnik može na isti način da prosledi informacije
  • ograničena je dužina stringa koji se prosleđuje, pa samim ti i količine informacija koje na ovaj način mogu biti prosleđene

 

Smeštanje informacija pomoću cookie-ja

Cookie 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:

 setcookie("grad", "Beograd");

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:

 echo "Vas rodni grad je " .$_COOKIE["grad"];

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:

 #ističe za sat vremena od snimanja
 setcookie("grad", "Beograd" , time() + 3600);
 #ističe u 5:00 1. maja 2009.
 setcookie("grad", "Beograd", mktime(5,0,0,5,1,2009));

Cookie možete da obrišete tako što poništite njenu vrednost. Na primer:

 setcookie("grad");

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 forme

Iako 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:

<?php
 $acct = "admin";
 echo "<form action='nextpage.php' method='POST'>
  <input type='hidden' name='acct' value='$acct'>
  <input type='submit' value='Next Page'>
  </form>
  \n";
?>

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 sesija

Sesija 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:

 $_SESSION["ime"]="Nikola";

Ova informacija će biti dostupna na svim stranama unutar jedne sesije.
Ukoliko je potrebno izbrisati neku informaciju, koristite funkciju unset():

 unset($_SESSION["ime"]);


Sledi primer korišćena sesije prilikom logovanja:

login.php

<?php
if ($_POST['submit'] == "Login")
{
 //deo koda koji proverava korisnicko ime i sifru
 
 //ukoliko je korisnik prepoznat
 session_start();
 $_SESSION['access'] = "yes";
 header(Location:access.php);
{

if ($_POST['submit'] == "Log Out")
{
 //ukoliko korisnik zeli da napusti sesiju
 session_destroy();
}
?>

 

access.php

<?php
// ukoliko korisnik pokusa da pristupi ovoj strani, proveri da li se prijavio preko login.php

if ($_SESSION['access'] != "yes")
{
 header(Location:login.php);
}
?>


Smatrate da je ova lekcija korisna?  Preporučite je. Broj preporuka:5