WebDev Zone.GR

Δουλεύοντας με Cookies

Τι είναι

Τα cookies είναι ένας τρόπος αποθήκευσης πληροφορίας στον Η/Υ ενός χρήστη σχετικά με την περιήγηση του σε μια ιστοσελίδα. Αποτελείται από ένα απλό αρχείο κειμένου με δεδομένα. Κάθε φορά που ο χρήστης επισκέπτεται την ιστοσελίδα που της ανήκει το cookie, γίνεται ανάκτηση των αποθηκευμένων πληροφοριών.
Ένα παράδειγμα χρήσης: Αποθήκευση προτιμήσεων σε μια ιστοσελίδα (πχ i-google).

Αποθηκεύοντας ένα cookie

Για να αποθηκεύσουμε ένα Cookie καλούμε την συνάρτηση setcookie()
Προσοχή! Θα πρέπει να καλέσετε την setcookie πριν εμφανίσετε οποιοδήποτε HTML κώδικα στην σελίδα.
<?php
setcookie($onoma, $timi, $liksi, $path, $domain, $secure)
?>
Οι μεταβλητές αναφέρονται στις εξής τιμές:
$onoma: Το όνομα της πληροφορίας του cookie (π.χ bg_color)
$timi: Η τιμή για την αντίστοιχη πληροφορία του cookie (π.χ black)
$liksi: Ο χρόνος λήξης του cookie (σε Unix Timestamp μορφή - δευτερόλεπτα) (π.χ time()+"2592000" - λήξη σε 1 μήνα)
$path: Ο φάκελος και οι υποφάκελοι για τους οποίους αφορά το συγεκριμένο cookie (π.χ / - όλη την ιστοσελίδα)
$domain: Το domain (και τα subdomains του) που αφορά το συγκεκριμένο cookie (π.χ wmp.gr)
$secure: Αν το cookie αποθηκεύεται μέσω https πρέπει να γίνει true, αλλιώς false (π.χ false)
<?php
setcookie("bg_color", "black", time()+2592000, "/", "wmp.gr", false);
?>

Στο συγκεκριμένο παράδειγμα αποθηκεύσαμε την προτίμηση του χρήστη να έχει μαύρο φόντο στην ιστοσελίδα μας για 1 μήνα.

Διαβάζοντας ένα cookie

Έστω ότι αποθηκεύσαμε το cookie. Για να διαβάσουμε τα περιεχόμενα του, απλά καλούμε την μεταβλητή $_COOKIE['onoma'] όπου όνομα το cookie που μας ενδιαφέρει. Αν θέλουμε να ελέγξουμε αν υπάρχει cookie χρησιμοποιούμε την isset().
<?php
if (isset($_COOKIE['bg_color'])) {
   echo "<body bgcolor=\"".$_COOKIE['bg_color']."\">";
   echo "Μαύρο χρώμα από το cookie!";
}else {
   echo "<body bgcolor=\"red\">";
   echo "Δεν βρέθηκε cookie.. Προκαθορισμένο χρώμα: Κόκκινο";
}
?>
Αν θέλουμε να δούμε όλα τα cookies που αποθηκεύσαμε σε ένα χρήστη καλούμε την print_r() - τυπώνει τις τιμές ενός array
<?php
print_r($_COOKIE);

// Tha emfanisei to eksis
// Array
// (
//    [bg_color] => black
// )
?>

Διαγράφοντας ένα cookie

Αν θέλουμε να διαγράψουμε ένα cookie απλά το θέτουμε πάλι με την setcookie αλλά βάζουμε στο $expire ημερομηνία στο παρελθόν (αρνητική).
<?php
setcookie("bg_color", "black", time()-3600, "/", "wmp.gr", false);
?>

Εκτυπώθηκε από: http://www.webdevzone.gr
Κατηγορία: PHP
Ημερομηνία: Τρίτη, 25 Μαΐου 2010
Συγγραφέας: Seldimi