Διαφορά μεταξύ Session και Cookies
Βασική διαφορά μεταξύ περιόδου λειτουργίας και cookie
- Οι περίοδοι λειτουργίας είναι αρχεία από την πλευρά του διακομιστή που περιέχουν πληροφορίες χρήστη, ενώ τα cookies είναι αρχεία από την πλευρά του πελάτη που περιέχουν πληροφορίες χρήστη.
- Η περίοδος λειτουργίας εξαρτάται από το Cookie, αλλά το Cookie δεν εξαρτάται από μια περίοδο λειτουργίας.
- Μια περίοδος σύνδεσης τελειώνει όταν ένας χρήστης κλείσει το πρόγραμμα περιήγησής του/της, ενώ ένα Cookie λήγει ανάλογα με τη διάρκεια ζωής που έχετε ορίσει για αυτό.
- Μπορείτε να αποθηκεύσετε όσα δεδομένα θέλετε σε μια περίοδο λειτουργίας, αλλά ο χώρος αποθήκευσης δεδομένων σε ένα Cookie είναι μόνο 4KB.
- Όλα τα καταχωρημένα δεδομένα σε μια συνεδρία μπορούν να καταστραφούν χρησιμοποιώντας την εντολή Session_destroy(). Ωστόσο, δεν υπάρχει τέτοια εντολή όπως unsetcookie() για την αφαίρεση δεδομένων από ένα cookie.

Εδώ, έχω αναλύσει τη διαφορά μεταξύ Συνεδρία και cookie και θα αξιολογήσει διεξοδικά τα πλεονεκτήματα και τα μειονεκτήματά τους.
Τι είναι μια Συνεδρία;
Μια συνεδρία είναι μια καθολική μεταβλητή που είναι αποθηκευμένη στον διακομιστή. Σε κάθε συνεδρία εκχωρείται ένα μοναδικό αναγνωριστικό, το οποίο χρησιμοποιείται για την ανάκτηση αποθηκευμένων τιμών. Κάθε φορά που δημιουργείται μια περίοδος λειτουργίας, ένα cookie που περιέχει το μοναδικό αναγνωριστικό περιόδου λειτουργίας αποθηκεύεται στον υπολογιστή του χρήστη και επιστρέφεται με κάθε αίτημα στον διακομιστή. Εάν το πρόγραμμα περιήγησης πελάτη δεν υποστηρίζει cookies, το μοναδικό αναγνωριστικό περιόδου σύνδεσης εμφανίζεται στη διεύθυνση URL. Οι περίοδοι λειτουργίας έχουν τη δυνατότητα να αποθηκεύουν σχετικά μεγάλες ποσότητες δεδομένων σε σύγκριση με τα cookies.
Οι τιμές της περιόδου λειτουργίας διαγράφονται αυτόματα όταν το πρόγραμμα περιήγησης είναι κλειστό. Εάν θέλετε να αποθηκεύσετε τις τιμές μόνιμα, θα πρέπει να τις αποθηκεύσετε στο βάσεις δεδομένων.
Ακριβώς όπως η μεταβλητή του πίνακα $_COOKIE, οι μεταβλητές περιόδου λειτουργίας αποθηκεύονται στη μεταβλητή του πίνακα $_SESSION. Παρόμοια με τα cookies, η περίοδος λειτουργίας πρέπει να ξεκινήσει πριν από τυχόν ετικέτες HTML.
Γιατί και πότε πρέπει να χρησιμοποιήσω το Sessions;
Οι περίοδοι λειτουργίας χρησιμοποιούνται για τη μετάδοση τιμών από τη μια σελίδα στην άλλη. Αποθηκεύουν σημαντικές πληροφορίες, όπως το αναγνωριστικό χρήστη, με μεγαλύτερη ασφάλεια στον διακομιστή, όπου οι κακόβουλοι χρήστες δεν μπορούν να τις παραβιάσουν.
Χρησιμοποιείται επίσης όταν θέλετε μια εναλλακτική λύση στα cookie σε προγράμματα περιήγησης που δεν υποστηρίζουν cookies, για την αποθήκευση καθολικών μεταβλητών με αποτελεσματικό και πιο ασφαλή τρόπο. Είναι καλύτερο από το να τα μεταβιβάζετε στη διεύθυνση URL ή όταν αναπτύσσετε μια εφαρμογή όπως ένα καλάθι αγορών που αποθηκεύει προσωρινά πληροφορίες με χωρητικότητα μεγαλύτερη από 4KB.
Δημιουργία συνεδρίας με PHP
Για να ξεκινήσετε μια περίοδο λειτουργίας, πρέπει να ξεκινήσετε τη συνάρτηση session_start στην PHP και στη συνέχεια να αποθηκεύσετε τις τιμές σας στον υπερσφαιρικό πίνακα $_SESSION.
Εξετάστε το σενάριο όπου θέλετε να παρακολουθείτε τη συχνότητα των επισκέψεων στη σελίδα. Η χρήση μιας συνεδρίας είναι μια αποτελεσματική μέθοδος για το σκοπό αυτό.
Το ακόλουθο παράδειγμα δείχνει τον τρόπο δημιουργίας και πρόσβασης σε τιμές σε περιόδους σύνδεσης:
<?php session_start(); //start the PHP_session function if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>Παραγωγή:
You are visitor number 1
Πλεονεκτήματα της συνεδρίας
Εδώ είναι τα πλεονεκτήματα της συνεδρίας από τη δική μου οπτική γωνία.
- Βελτιώνει την αλληλεπίδραση των χρηστών διατηρώντας μια κατάσταση συνεχούς διαλόγου σε πολλαπλά αιτήματα.
- Μειώνει το φόρτο του διακομιστή με την προσωρινή αποθήκευση δεδομένων χρήστη.
- Βελτιώνει την ασφάλεια μέσω της ελεγχόμενης έκθεσης δεδομένων για περιορισμένη διάρκεια.
- Επιτρέπει εξατομικευμένες εμπειρίες με βάση τη συμπεριφορά και τις προτιμήσεις των χρηστών.
- Διευκολύνει πολύπλοκες συναλλαγές παρακολουθώντας πολλαπλά βήματα.
- Αυξάνει την απόδοση του ιστότοπου ελαχιστοποιώντας την ανάγκη εκ νέου ελέγχου ταυτότητας.
- Υποστηρίζει την επεκτασιμότητα με τη διαχείριση των περιόδων σύνδεσης χρήστη αποτελεσματικά σε κατανεμημένα συστήματα.
Μειονεκτήματα της συνεδρίας
Από την εμπειρία μου, αυτά είναι τα μειονεκτήματα της χρήσης συνεδριών.
- Αυξάνει τον κίνδυνο παραβίασης δεδομένων εάν υποκλαπούν δεδομένα περιόδου σύνδεσης.
- Καταναλώνει τη μνήμη διακομιστή, μειώνοντας πιθανώς τη συνολική απόδοση του συστήματος.
- Μπορεί να οδηγήσει σε ασυνεπείς εμπειρίες χρήστη εάν δεν διαχειρίζεται σωστά.
- Απαιτεί πρόσθετους πόρους διακομιστή για τη διατήρηση και παρακολούθηση των συνεδριών.
- Η λήξη της περιόδου λειτουργίας μπορεί να διαταράξει τις δραστηριότητες των χρηστών, προκαλώντας απογοήτευση.
- Ευάλωτο σε επιθέσεις πειρατείας και σταθεροποίησης συνεδρίας.
- Μπορεί να περιπλέξει τη συμμόρφωση με τους κανονισμούς απορρήτου λόγω της επίμονης αποθήκευσης δεδομένων.
Τι είναι ένα cookie;
Ένα cookie είναι ένα μικρό αρχείο με μέγιστο μέγεθος 4KB που αποθηκεύει ο διακομιστής web στον υπολογιστή-πελάτη. Μόλις οριστεί ένα cookie, όλα τα αιτήματα σελίδας που ακολουθούν επιστρέφουν το όνομα και την τιμή του cookie. Ένα cookie μπορεί να διαβαστεί μόνο από τον τομέα από τον οποίο έχει εκδοθεί. Για παράδειγμα, ένα σύνολο cookie που χρησιμοποιεί τον τομέα www.guru99.com δεν μπορεί να διαβαστεί από τον τομέα career.guru99.com. Οι περισσότεροι ιστότοποι στο διαδίκτυο εμφανίζουν στοιχεία από άλλους τομείς, όπως η διαφήμιση. Οι τομείς που εξυπηρετούν αυτά τα στοιχεία μπορούν επίσης να ορίσουν τα δικά τους cookie. Αυτά είναι γνωστά ως cookie τρίτων. Ένα cookie που δημιουργήθηκε από έναν χρήστη μπορεί να είναι ορατό μόνο σε αυτόν. Οι άλλοι χρήστες δεν μπορούν να δουν την αξία του. Πλέον προγράμματα περιήγησης στο web έχουν επιλογές για την απενεργοποίηση των cookies, των cookie τρίτων ή και των δύο.
Γιατί και πότε πρέπει να χρησιμοποιώ Cookies;
Το HTTP είναι ένα πρωτόκολλο χωρίς πολιτεία. Τα cookies μας επιτρέπουν να παρακολουθούμε την κατάσταση της εφαρμογής χρησιμοποιώντας μικρά αρχεία που είναι αποθηκευμένα στον υπολογιστή του χρήστη. Η διαδρομή όπου αποθηκεύονται τα cookies εξαρτάται από το πρόγραμμα περιήγησης. Ο Internet Explorer συνήθως τα αποθηκεύει στο φάκελο Temporal Internet Files.
Εξατομίκευση της εμπειρίας χρήστη: Αυτό επιτυγχάνεται επιτρέποντας στους χρήστες να επιλέξουν τις προτιμήσεις τους. Τα αιτήματα σελίδας που ακολουθούν εξατομικεύονται με βάση τις καθορισμένες προτιμήσεις στα cookies. Παρακολούθηση των σελίδων που επισκέπτεται ένας χρήστης.
Δημιουργία Cookies με PHP
Τώρα, ας εμβαθύνουμε στη βασική σύνταξη που απαιτείται για τη δημιουργία cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
- Στην PHP, το setcookie λειτουργία χρησιμοποιείται για τη δημιουργία ενός cookie. Το «όνομα_cookie» αντιπροσωπεύει το αναγνωριστικό για το cookie, το οποίο είναι απαραίτητο για τον διακομιστή όταν χρειάζεται να ανακτήσει την τιμή του cookie από τον πίνακα _COOKIE $. Αυτό το όνομα είναι υποχρεωτικό.
- Το "cookie_value" υποδηλώνει το περιεχόμενο του cookie και είναι επίσης απαραίτητο.
- Η παράμετρος "[expiry_time]" είναι προαιρετική και μπορεί να ρυθμιστεί έτσι ώστε να υπαγορεύει τη διάρκεια ζωής του cookie, όπως να ρυθμίσετε τη λήξη του σε 1 ώρα. Αυτό γίνεται προσθέτοντας ή αφαιρώντας δευτερόλεπτα από τη συνάρτηση PHP time(), για παράδειγμα, time() + 3600 για να ορίσετε 1 ώρα.
- Το "[cookie_path]" είναι μια άλλη προαιρετική παράμετρος που καθορίζει τη διαδρομή διακομιστή όπου είναι προσβάσιμο το cookie. Η χρήση μιας κάθετου "/" δείχνει ότι το cookie είναι διαθέσιμο σε ολόκληρο τον τομέα, ενώ ο καθορισμός υποκαταλόγων περιορίζει την πρόσβαση σε αυτούς τους υποτομείς.
- Η παράμετρος "[domain]", επίσης προαιρετική, καθορίζει πού είναι δυνατή η πρόσβαση στο cookie. Για παράδειγμα, ρυθμίζοντας το σε
www.cookiedomain.com
το καθιστά διαθέσιμο σε ολόκληρο τον τομέα, ενώwww.sub.cookiedomain.com
τον περιορίζει σε αυτόν τον υποτομέα και στους θυγατρικούς του υποτομείς. Θυμηθείτε, ένας υποτομέας μπορεί επίσης να έχει τους δικούς του υποτομείς, εφόσον το συνολικό μήκος του τομέα δεν υπερβαίνει τους 253 χαρακτήρες. - Η παράμετρος "[secure]" είναι προαιρετική, με την προεπιλεγμένη ρύθμιση να είναι false. Καθορίζει εάν το cookie θα πρέπει να μεταδίδεται μέσω HTTPS (αν είναι αληθές) ή HTTP (αν είναι ψευδές).
- Η ρύθμιση "[Httponly]" είναι επίσης προαιρετική. Όταν οριστεί σε true, το cookie δεν είναι προσβάσιμο από γλώσσες δέσμης ενεργειών από την πλευρά του πελάτη, όπως π.χ JavaΓραφή .
Σημείωση: Η συνάρτηση setcookie PHP πρέπει να κληθεί πριν από την έξοδο οποιωνδήποτε ετικετών HTML.
Ας εξετάσουμε ένα πρακτικό παράδειγμα που περιλαμβάνει cookies.
Σε αυτήν την περίπτωση, θα αναπτύξουμε ένα απλό πρόγραμμα που αποθηκεύει ένα όνομα χρήστη σε ένα σύνολο cookie για να λήξει μετά από δέκα δευτερόλεπτα.
Ο παρακάτω κώδικας "cookies.php" δείχνει πώς να το εφαρμόσετε.
<?php setcookie("user_name", "Guru99", time() + 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>Παραγωγή:
the cookie has been set for 60 seconds
Πλεονεκτήματα των cookies
Από την εμπειρία μου, εδώ είναι τα οφέλη του μπισκότα:
- Ενισχύει το στοιχείο της έκπληξης στην ανακάλυψη γεύσης.
- Προσφέρει μινιμαλιστική αισθητική, ιδανική για μοντέρνο branding.
- Μειώνει την ακαταστασία στη συσκευασία, εστιάζοντας την προσοχή στο προϊόν.
- Εξαλείφει την προκατάληψη με βάση τις προτιμήσεις των συστατικών ή την αντίληψη της επωνυμίας.
- Ενθαρρύνει τη γεύση χωρίς προκαταλήψεις, οδηγώντας σε αμερόληπτη ανατροφοδότηση.
- Δυνητικά μειώνει το κόστος εκτύπωσης για τη συσκευασία.
- Απλοποιεί τη συμμόρφωση με τους κανονισμούς σε αγορές με λιγότερο αυστηρούς νόμους για την επισήμανση.
Μειονεκτήματα του cookie
Με βάση αυτά που έχω δει, αυτά είναι τα μειονεκτήματα των cookies.
- Οι πελάτες δεν μπορούν να αναγνωρίσουν αλλεργιογόνα ή διατροφικούς περιορισμούς.
- Δεν διαθέτει διατροφικές πληροφορίες, οι οποίες είναι σημαντικές για τους καταναλωτές που έχουν επίγνωση της υγείας τους.
- Χάνει την ευκαιρία να αναδείξει μοναδικά ή premium συστατικά.
- Μπορεί να προκαλέσει σύγχυση μεταξύ παρόμοιων προϊόντων στα ράφια.
- Αποτρέπει την αναγνώριση της επωνυμίας και τη δημιουργία αφοσίωσης.
- Μειώνει την ενημερωμένη λήψη αποφάσεων από τους καταναλωτές.
- Αυτό θα μπορούσε να οδηγήσει σε νομικά ζητήματα σε περιοχές με αυστηρούς νόμους για την επισήμανση.
Session vs Cookie: Difference Between Them
Ακολουθούν οι σημαντικές διαφορές μεταξύ μιας περιόδου λειτουργίας και ενός cookie που έχω παρατηρήσει στην πρακτική μου:
Οι περίοδοι λειτουργίας είναι αρχεία από την πλευρά του διακομιστή που περιέχουν πληροφορίες χρήστη |
Τα cookies είναι αρχεία από την πλευρά του πελάτη που περιέχουν πληροφορίες χρήστη |
Μια περίοδος σύνδεσης τελειώνει όταν ένας χρήστης κλείσει το πρόγραμμα περιήγησής του |
Το cookie τελειώνει ανάλογα με τη διάρκεια ζωής που έχετε ορίσει για αυτό |
In PHP, πριν χρησιμοποιήσετε την $_SESSION, πρέπει να γράψετε session_start(); Το ίδιο και για άλλες γλώσσες |
Δεν χρειάζεται να ξεκινήσετε το cookie καθώς είναι αποθηκευμένο στον τοπικό σας υπολογιστή |
Μέσα σε μια περίοδο λειτουργίας, μπορείτε να αποθηκεύσετε όσα δεδομένα θέλετε. Το μόνο όριο που μπορείτε να φτάσετε είναι η μέγιστη μνήμη που μπορεί να καταναλώσει ένα σενάριο κάθε φορά, η οποία είναι 128 MB από προεπιλογή |
Το επίσημο μέγιστο μέγεθος cookie είναι 4KB |
Μια περίοδος λειτουργίας εξαρτάται από το Cookie |
Ένα cookie δεν εξαρτάται από την περίοδο λειτουργίας |
Η Session_destroy() χρησιμοποιείται για την καταστροφή όλων των καταχωρημένων δεδομένων ή για την απενεργοποίηση ορισμένων |
Δεν υπάρχει συνάρτηση με το όνομα unsetcookie() |
Συμπέρασμα
Συνιστώ τη χρήση περιόδων σύνδεσης όταν οι απαιτήσεις ασφάλειας δεδομένων και χωρητικότητας υπερβαίνουν αυτές που μπορούν να προσφέρουν τα cookies. Ωστόσο, τα cookies είναι ασυναγώνιστα για ευκολία στη χρήση και για την εφαρμογή ελαφριάς, επίμονης παρακολούθησης κατάστασης χρήστη.