Date post: | 24-Dec-2014 |
Category: |
Technology |
Upload: | sabin-buraga |
View: | 3,877 times |
Download: | 3 times |
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
1
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
Programare WebProgramare WebCookieCookie-uri & sesiuni-uri & sesiuni
Dr. Sabin-Corneliu BuragaFacultatea de Informatica
Universitatea “A.I.Cuza” – Iasi, Romania
http://www.infoiasi.ro/~busaco/
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
2
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
•Cookie-uri •Sesiuni
cuprinscuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
3
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Mecanism standard care permite ca un server Web sa trimita anumite informatii pe calculatorul unui client (utilizator), prin intermediul browser-ului, sa ceara clientului sa stocheze aceste informatii pentru ca, ulterior, navigatorul sa returneze informatiile spre serverul WWW
• Mijloc persistent de stocare a datelor pe masina clientului Web cu scopul de a fi accesate ulterior de pe server
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
4
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Utilizari:– memorarea preferintelor utilizatorilor – stocarea informatiilor de autentificare– tranzactii in cadrul comertului electronic – managementul sesiunilor Web– completarea automata a formularelor
– si multe altele
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
5
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Tipuri:– Cookie-uri persistente
•nu vor fi distruse la inchiderea navigatorului, ci vor fi memorate intr-un fisier, perioada lor de viata fiind stabilita de creatorul cookie-urilor
– Cookie-uri nepersistente•dispar la inchiderea browser-ului
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
6
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Un cookie consta dintr-o pereche nume=valoare • Valoarea este un sir de caractere codificat
in maniera URL-urilor • Datele referitoare la un cookie vor fi
receptionate de navigator care mentine o lista de cookie-uri apartinind serverului care le-a trimis
• Un cookie este trimis unui client incluzind cimpul-antet Set-Cookie intr-un raspuns HTTP
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
7
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Set-Cookie: nume=valoare; expires=data; path=cale; domain=domeniu; secure – expires – data si timpul cind cookie-ul
va expira si va fi sters de pe disc – domain – numele simbolic al serverului
care a generat cookie-ul– path – specifica un subset de URL-uri
din domeniul corespunzator unui cookie– secure – cookie-ul este transmis
doar daca tranzactia este sigura (via HTTPS)
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
8
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Un cookie e transmis doar daca intruneste toate conditiile de validitate (se potrivesc domeniul, calea de directoare, timpul de expirare si securitatea canalului de comunicatie)
• Serverul va primi de la client, in antetul HTTP, o linie de forma: Cookie: nume1=valoare1; nume2=valoare2...
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
9
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
•Stocarea cookie-urilor persistente:−Netscape/Mozilla
fisierul cookies sau cookies.txt−Internet Explorer
fisiere [email protected]
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
10
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Creare– CGI (bash)
#!/bin/bash echo "Set-Cookie: culoare=verde; path=/; expires=Mon, 03-Dec-2007 07:33:00 GMT" ...
– PHP – functia setcookie()<?php setcookie ("alta_culoare", "albastra"); echo "Un cookie de culoarea " . $_COOKIE["alta_culoare"];
?>
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
11
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Expirare– Se anuleaza valoarea si timpul, eventual
resetindu-se si celelalte atribute ale cookie-ului
– PHP <?php setcookie ($nume_cookie, "", 0, "/", "", 0);?>
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
12
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Consultare– Cookie-urile se regasesc in variabila-antet
HTTP_COOKIE– CGI (Perl)
@envpairs = split(/;/, $ENV{'HTTP_COOKIE'}); foreach $pair (@envpairs) { ($name, $value) = split(/=/, $pair); $cookie{$name} = $value; } $fundal = $cookie{'alta_culoare'};
– PHP – cookie-ul este vazut ca o variabila: $_COOKIE['nume_cookie'] (sau $nume_cookie)
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
13
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Consultare– Direct in navigator prin JavaScript:
javascript:document.cookie
cookiecookie-uri-uri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
14
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Retinem culoarea de fundal preferata de un utilizator:
define ('CULOARE_IMPLICITA', 'white'); // verificam daca exista culoarea $culoare = $_REQUEST['culoare']; if (!$culoare) { // nu exista $culoare = CULOARE_IMPLICITA;} // setam cookie-ul sa expire peste 10 zile if (!setcookie('culoare_fundal', $culoare,
time()+ 60 * 60 * 24 * 10)) { echo 'Cookie-ul n-a putut fi setat'; }
cookiecookie-uri | exemplu-uri | exemplu
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
15
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
<html> <head> <title>Culori preferate</title> <style type="text/css"> body { background:
<?php echo $_COOKIE['culoare_fundal']; ?> } </style> </head> <body> <p>Alegeti culoarea de fundal preferata
ce va aparea la urmatoarea vizita:</p>
cookiecookie-uri | exemplu -uri | exemplu (cont.)(cont.)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
16
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<select name="culoare"> <?php // generam lista de culori foreach (array ('cyan', 'yellow', 'white', 'pink', 'blue')
as $c) { echo '<option value="' . $c . '">' . $c . '</option>'; } ?> </select> <input type="submit" value="Alege culoarea" /> </form></body></html>
cookiecookie-uri | exemplu -uri | exemplu (cont.)(cont.)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
17
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• HTTP este un protocol stateless, neputind oferi informatii daca cereri succesive provin de la acelasi client (eventual, de la aceeasi instanta a navigatorului)
• Apare necesitatea de a prezerva anumite date de-a lungul mai multor accesari inrudite– Exemple: starea cosului de cumparaturi,
formulare Web completate in mai multi pasi, paginarea continutului, starea autentificarii etc.
sesiunisesiuni
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
18
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Orice vizitator al sitului va avea asociat un identificator unic – session ID (SID)– Stocat intr-un cookie ori propagat via URL
• Unele servere de aplicatii garanteaza integritatea sesiunii si dupa o restartare (a serverului ori a aplicatiei)
• Unei sesiuni i se pot asocia diverse variabile sa fie mentinute intre accesari consecutive
• O sesiune se poate inregistra (initia) implicit sau explicit, in functie de serverul de aplicatii sau de configuratia stabilita
sesiunisesiuni
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
19
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
• Pentru PHP, exista functiile session_start(), session_register(), session_id(), session_unregister(), session_destroy() – Exemplu (contorizarea accesarilor):
<?php session_start (); if (!isset($_SESSION['accesari'])) { $_SESSION['accesari'] = 0; } else { $_SESSION['accesari']++; }?>
sesiunisesiuni
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
20
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
•Cookie-uri •Sesiuni
rezumatrezumat
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
21
Teh
nolo
gii
Web
Teh
nolo
gii
Web
20
07
20
07
Intrebari…?