Ce sunt Cookies?
Cum setez un cookie? Cum vad cookie-urile existente si cum le sterg?
Adaugarea unui cookie pe calculatorul vizitatorului se realizeaza cu ajutorul functiei setcookie. Aceasta va trimite un header pe care browserul client il va interpreta si va crea cookie-ul. Fiind vorba de headere, se aplica regula de a nu printa nimic intainte de apelarea functiei setcookie. In cazul in care o instructiune de afisare a fost apelata inainte, cookie-ul nu va mai putea fi creat.
Pentru a vedea cookie-urile deja create in browser-ul vizitatorului se foloseste variabila predefinita $_COOKIE. Aceasta este un vector asociativ ce contine un element pentru fiecare cookie existent. Popularea acestuia se face in mod automat in functie de informatiile transmise de browser.
Nota: elemente de tip cookie se pot crea si la nivel de browser (folosind JavaScript sau un alt limbaj de client-side scripting). Acestea vor fi disponibile in variabila $_COOKIE la urmatorul request (efectuat, evident, dupa ce cookie-urile au fost create).
<?php # crearea unui cookie de test care expira la sfarsitul sesiunii de lucru setcookie("Test", 'acesta este un test'); # crearea unui cookie care expira intr-o ora setcookie("Test2", 'o ora', time()+3600); # vizualizarea cookie-urilor if( isset( $_COOKIE[ 'Test' ] ) ) { echo 'Test: ', $_COOKIE[ 'Test' ], '<br>'; } if( isset( $_COOKIE[ 'Test2' ] ) ) { echo 'Test2: ', $_COOKIE[ 'Test2' ], '<br>'; } // Rezultat (e nevoie de refresh prima data) // // # stergerea unui cookie se face printr-un truc: alegand o data de expirare din trecut setcookie("Test2", 'o ora', time()-3600); // timpul de expirare a trecut, deci cookie-ul // nu va mai fi valid si va fi sters de catre browser ?>
Cum verific daca browser-ul utilizatorilor accepta cookie-uri?
Ideea de baza este urmatoarea: se incearca sa se creeze un cookie, apoi se face un redirect la aceeasi pagina iar in urma redirectului (practic la a doua accesare a paginii) se verifica daca acel cookie a fost creat cu succes.
Redirect-ul se face folosind headere, deci va fi transparent pentru utilizator, care probabil nici nu va observa ca a fost redirectionat. Pentru a stii cand se face verificarea cookie-ului, se foloseste un parametru GET ce va avea valoarea 1 dupa redirect.
<?php function testCookie() { # se foloseste variabila globala $_SERVER pentru a prelua numele # scripului curent (folosit la redirect) $paginaCurenta = $_SERVER[ 'PHP_SELF' ]; # testez mai intai daca am creat cookie-ul if( empty( $_GET[ 'creat' ] ) ) { # este prima data cand accesez pagina # adaug un cookie de test setcookie( 'ctest', 'verificare' ); # fac redirect la aceasi pagina si adaug parametrul "creat" # pentru a putea semnala faptul ca s-a incercat deja crearea cookie-ului header( 'Location: ' . $paginaCurenta . '?creat=1' ); exit; } else { # se va executa asta atunci cand exista parametrul GET, deci dupa # redirect, cand cookie-ul a fost deja creat if( isset( $_COOKIE[ 'ctest' ] ) && !empty( $_COOKIE[ 'ctest' ] ) ) { return true; } else { return false; } } } if (testCookie()) print 'Browserul dvs. accepta cookie-uri'; else print 'Ne pare rau dar browserul dvs. nu accepta cookies'; ?>
Puteti verifica acest exemplu mergand la pagina cookietest.php. Ca idee de testare, dezactivati cookie-urile din browser si accesati pagina. Apoi activati-le si face click din nou pe link (nu dati refresh la pagina deja deschisa intrucat are deja parametrul "creat=1" ceea ce va impiedica scriptul sa creeze cookie-ul din nou).
Descarcati fisierul cookietest.php si incercati-l pe serverul vostru
Cum creez un tracking cookie (un cookie care sa retina numarul de vizite pe pagina)?
<?php # verific daca cookie-ul exista deja si preiau numarul de vizite stocat $vizite = 0; if( isset( $_COOKIE[ 'visits' ] ) ) { $vizite = $_COOKIE[ 'visits' ]; } # cresc numarul vizitelor cu o unitate $vizite++; # actualizez (sau setez) cookie-ul ce va retine nr de vizite setcookie( 'visits', $vizite, time() * 2 ); // va expira peste mult timp # afisez un mesaj corespunzator if( $vizite == 1 ) { echo "Bun venit! Se pare ca nu ne-ai mai vizitat pana acum!"; } else { echo "Bine ai revenit. E a $vizite-a oara cand ne vizitezi."; } // Rezultat: Bun venit! Se pare ca nu ne-ai mai vizitat pana acum! ?>
Nimic de afisat.
Adauga un comentariu la aceasta sectiune.