PHP Cookies
PHP και λειτουργίες που αφορούν Cookies
Τα PHP cookies είναι αρχεία κειμένου που αποθηκεύονται στον υπολογιστή-πελάτη και διατηρούνται για σκοπούς παρακολούθησης χρήσης. Η PHP υποστηρίζει τα cookies HTTP.
Υπάρχουν τρία βήματα που εμπλέκονται στην αναγνώριση των χρηστών που επιστρέφουν:
- Η δέσμη ενεργειών διακομιστή στέλνει ένα σύνολο cookies στο πρόγραμμα περιήγησης. Για παράδειγμα όνομα, ηλικία ή αριθμός ταυτότητας κ.λπ.
- Το πρόγραμμα περιήγησης αποθηκεύει αυτές τις πληροφορίες σε τοπικό μηχάνημα για μελλοντική χρήση.
- Όταν την επόμενη φορά που το πρόγραμμα περιήγησης στείλει οποιοδήποτε αίτημα στον διακομιστή ιστού, τότε στέλνει αυτές τις πληροφορίες για τα cookies στον διακομιστή και ο διακομιστής χρησιμοποιεί αυτές τις πληροφορίες για την αναγνώριση του χρήστη.
Η ανατομία ενός cookie
Τα cookies συνήθως ορίζονται σε μια κεφαλίδα- header HTTP (αν και η JavaScript μπορεί επίσης να ορίσει ένα cookie απευθείας σε ένα πρόγραμμα περιήγησης). Ένα script που ορίζει ένα cookie μπορεί να στείλει κεφαλίδες- headers που μοιάζουν κάπως έτσι:
HTTP/1.1 200 OK Date: Fri, 04 Feb 2000 21:03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=tutorialspoint.com Connection: close Content-Type: text/html |
Όπως μπορείτε να δείτε, η κεφαλίδα Set-Cookie περιέχει ένα ζεύγος τιμών ονόματος, μια ημερομηνία GMT, μια διαδρομή και έναν τομέα- domain. Το όνομα και η τιμή θα είναι κωδικοποιημένα στη διεύθυνση URL. Το πεδίο λήξης είναι μια οδηγία προς το πρόγραμμα περιήγησης να “ξεχάσει” το cookie μετά τη δεδομένη ώρα και ημερομηνία.
Εάν το πρόγραμμα περιήγησης έχει ρυθμιστεί να αποθηκεύει cookies, θα διατηρήσει αυτές τις πληροφορίες μέχρι την ημερομηνία λήξης. Εάν ο χρήστης υποδείξει το πρόγραμμα περιήγησης σε οποιαδήποτε σελίδα που ταιριάζει με τη διαδρομή και τον τομέα του cookie, θα στείλει ξανά το cookie στον διακομιστή. Οι κεφαλίδες του προγράμματος περιήγησης μπορεί να φαίνονται κάπως έτσι:
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz |
Ένα script θα έχει πρόσβαση στις περιβαλλοντικές μεταβλητές $_COOKIE ή $HTTP_COOKIE_VARS[] που περιέχει όλα τα ονόματα και τις τιμές των cookie.
Η πρόσβαση στο παραπάνω cookie είναι δυνατή χρησιμοποιώντας $HTTP_COOKIE_VARS[“name “].
Αντιλαμβανόμαστε εύκολα την ιδιαίτερη βαρύτητα που παίζουν τα cookies στο ηλεκτρονικό εμπόριο και στην ανάπτυξη ενός eshop και πόσο σημαντικό λειτουργικό αλλά και διαφημιστικό ρόλο επιτελούν τα cookies σε ένα ηλεκτρονικό κατάστημα. Όσοι ασχολούνται τόσο με την κατασκευή eshop όσο και με την διαφήμιση στο internet πρέπει να γνωρίζουν το ζήτημα καλά.
Ρύθμιση cookies
Η PHP παρείχε τη συνάρτηση setcookie() για να ορίσετε ένα cookie. Αυτή η συνάρτηση απαιτεί έως και έξι ορίσματα και πρέπει να κληθεί πριν από την ετικέτα <html>. Για κάθε cookie αυτή η λειτουργία πρέπει να καλείται ξεχωριστά.
setcookie(name, value, expire, path, domain, security);
- name − Ορίζει το όνομα του cookie και αποθηκεύεται σε μια μεταβλητή περιβάλλοντος που ονομάζεται HTTP_COOKIE_VARS. Αυτή η μεταβλητή χρησιμοποιείται κατά την πρόσβαση στα cookies.
- value − Ορίζει την τιμή της ονομαζόμενης μεταβλητής και είναι το περιεχόμενο που πραγματικά θέλετε να αποθηκεύσετε.
- expire − Αυτό καθορίζει μια μελλοντική ώρα σε δευτερόλεπτα από τις 00:00:00 GMT την 1η Ιανουαρίου 1970. Μετά από αυτήν την ώρα, το cookie δεν θα είναι προσβάσιμο. Εάν αυτή η παράμετρος δεν οριστεί, το cookie θα λήξει αυτόματα όταν κλείσει το πρόγραμμα περιήγησης Ιστού.
- path − Καθορίζει τους καταλόγους για τους οποίους ισχύει το cookie. Ένας μεμονωμένος χαρακτήρας κάθετο προς τα εμπρός επιτρέπει στο cookie να είναι έγκυρο για όλους τους καταλόγους.
- domain − Μπορεί να χρησιμοποιηθεί για τον καθορισμό του ονόματος τομέα σε πολύ μεγάλους τομείς και πρέπει να περιέχει τουλάχιστον δύο περιόδους για να είναι έγκυρη. Όλα τα cookies ισχύουν μόνο για τον κεντρικό υπολογιστή και τον τομέα που τα δημιούργησε.
- security − Μπορεί να οριστεί σε 1 για να οριστεί ότι το cookie θα πρέπει να αποστέλλεται μόνο με ασφαλή μετάδοση με χρήση HTTPS, διαφορετικά ορίζεται στο 0, πράγμα που σημαίνει ότι το cookie μπορεί να αποσταλεί από κανονικό HTTP.
Το ακόλουθο παράδειγμα θα δημιουργήσει δύο cookies name και age. Αυτά τα cookies θα λήξουν μετά από μία ώρα.
<?php setcookie(“name”, “John Watkin”, time()+3600, “/”,””, 0); setcookie(“age”, “36”, time()+3600, “/”, “”, 0);?> <html> <head> <title>Setting Cookies with PHP</title> </head> <body> <?php echo “Set Cookies”?> </body> </html> |
Πρόσβαση σε cookies
Η PHP παρέχει πολλούς τρόπους πρόσβασης στα cookies. Ο απλούστερος τρόπος είναι να χρησιμοποιήσετε μεταβλητές $_COOKIE ή $HTTP_COOKIE_VARS. Το παρακάτω παράδειγμα θα έχει πρόσβαση σε όλα τα cookies που ορίζονται στο παραπάνω παράδειγμα.
<html> <head> <title>Accessing Cookies with PHP</title> </head> <body> <?php echo $_COOKIE[“name”]. “<br />”; /* is equivalent to */ echo $HTTP_COOKIE_VARS[“name”]. “<br />”; echo $_COOKIE[“age”] . “<br />”; /* is equivalent to */ echo $HTTP_COOKIE_VARS[“age”] . “<br />”; ?> </body> </html> |
Μπορείτε να χρησιμοποιήσετε τη συνάρτηση isset() για να ελέγξετε εάν ένα cookie έχει οριστεί ή όχι.
<html> <head> <title>Accessing Cookies with PHP</title> </head> <body> <?php if( isset($_COOKIE[“name”])) echo “Welcome ” . $_COOKIE[“name”] . “<br />”; else echo “Sorry… Not recognized” . “<br />”; ?> </body> </html> |
Διαγραφή cookie
Επίσημα, για να διαγράψετε ένα cookie θα πρέπει να καλέσετε τη setcookie() με το όρισμα μόνο το name, αλλά αυτό δεν λειτουργεί πάντα καλά.
Είναι ασφαλέστερο να ορίσετε το cookie με μια ημερομηνία που έχει ήδη λήξει:
<?php setcookie( “name”, “”, time()- 60, “/”,””, 0); setcookie( “age”, “”, time()- 60, “/”,””, 0); ?> <html> <head> <title>Deleting Cookies with PHP</title> </head> <body> <?php echo “Deleted Cookies” ?> </body> </html> |
Μπορείτε να ενημερωθείτε για την php στο σχετικό θεματικό τμήμα του blog μας που μπορείτε να δείτε εδώ.
Αν θέλετε να μάθετε περισσότερα για την κατασκευή ιστοσελίδας παρακολουθήστε το σεμινάριο Web Design και άλλα σεμινάρια εξ αποστάσεως από το Εργαστήριο ΤΠΕ Ήρων
Πηγή: tutorialspoint.com