Συνεδρία PHP & Cookies PHP με παράδειγμα

Πίνακας περιεχομένων:

Anonim

Τι είναι το Cookie;

Ένα cookie είναι ένα μικρό αρχείο με το μέγιστο μέγεθος 4KB που αποθηκεύει ο διακομιστής ιστού στον υπολογιστή-πελάτη.

Μόλις οριστεί ένα cookie, όλα τα αιτήματα σελίδας που ακολουθούν επιστρέφουν το όνομα και την τιμή του cookie.

Ένα cookie μπορεί να διαβαστεί μόνο από τον τομέα από τον οποίο έχει εκδοθεί. Για παράδειγμα, ένα σύνολο cookie που χρησιμοποιεί τον τομέα www.guru99.com δεν μπορεί να διαβαστεί από τον τομέα career.guru99.com.

Οι περισσότεροι από τους ιστότοπους στο Διαδίκτυο εμφανίζουν στοιχεία από άλλους τομείς όπως η διαφήμιση. Οι τομείς που εξυπηρετούν αυτά τα στοιχεία μπορούν επίσης να ορίσουν τα δικά τους cookie. Αυτά είναι γνωστά ως cookie τρίτων.

Ένα cookie που δημιουργήθηκε από έναν χρήστη μπορεί να είναι ορατό μόνο σε αυτούς. Οι άλλοι χρήστες δεν μπορούν να δουν την αξία του.

Τα περισσότερα προγράμματα περιήγησης ιστού έχουν επιλογές για απενεργοποίηση cookie, cookie τρίτων ή και τα δύο.

Εάν συμβαίνει αυτό, η PHP αποκρίνεται διαβάζοντας το διακριτικό cookie στη διεύθυνση URL.

Το παρακάτω διάγραμμα δείχνει τον τρόπο λειτουργίας των cookies.

Εδώ,

1) Ένας χρήστης ζητά μια σελίδα που αποθηκεύει cookie

2) Ο διακομιστής ορίζει το cookie στον υπολογιστή του χρήστη

3) Άλλα αιτήματα σελίδας από τον χρήστη θα επιστρέψουν το όνομα και την τιμή του cookie

Σε αυτό το σεμινάριο, θα μάθετε-

  • Γιατί και πότε να χρησιμοποιώ Cookies;
  • Δημιουργία Cookies
  • Ανάκτηση της τιμής Cookie
  • Διαγραφή Cookies
  • Τι είναι μια συνεδρία;
  • Γιατί και πότε να χρησιμοποιείτε τις συνεδρίες;
  • Δημιουργία συνεδρίας
  • Καταστροφή μεταβλητών περιόδου σύνδεσης

Γιατί και πότε να χρησιμοποιώ Cookies;

  • Το Http είναι ένα πρωτόκολλο χωρίς κατάσταση. Τα cookies μας επιτρέπουν να παρακολουθούμε την κατάσταση της εφαρμογής χρησιμοποιώντας μικρά αρχεία που είναι αποθηκευμένα στον υπολογιστή του χρήστη.

    Η διαδρομή για την αποθήκευση των cookies εξαρτάται από το πρόγραμμα περιήγησης.

    Ο Internet Explorer τις αποθηκεύει συνήθως στο φάκελο Temporal Internet Files.

  • Εξατομίκευση της εμπειρίας χρήστη - αυτό επιτυγχάνεται επιτρέποντας στους χρήστες να επιλέξουν τις προτιμήσεις τους.

    Η σελίδα που ζητήθηκε να ακολουθήσει εξατομικεύεται βάσει των καθορισμένων προτιμήσεων στα cookie.

  • Παρακολούθηση των σελίδων που επισκέφτηκε ένας χρήστης

Δημιουργία Cookies

Ας δούμε τώρα τη βασική σύνταξη που χρησιμοποιείται για τη δημιουργία ενός cookie.

ΕΔΩ,

  • Php "setcookie" είναι η λειτουργία PHP που χρησιμοποιείται για τη δημιουργία του cookie.
  • "Cookie_name" είναι το όνομα του cookie που ο διακομιστής θα χρησιμοποιήσει κατά την ανάκτηση της τιμής του από τη μεταβλητή πίνακα $ _COOKIE. Είναι υποχρεωτικό.
  • "Cookie_value" είναι η τιμή του cookie και είναι υποχρεωτική
  • Το "[expiry_time]" είναι προαιρετικό. Μπορεί να χρησιμοποιηθεί για τον καθορισμό του χρόνου λήξης για το cookie, όπως 1 ώρα. Ο χρόνος ρυθμίζεται χρησιμοποιώντας τις συναρτήσεις χρόνου PHP () συν ή μείον αριθμό δευτερολέπτων μεγαλύτερη από 0, δηλαδή χρόνος () + 3600 για 1 ώρα.
  • Το "cookie_path]" είναι προαιρετικό. μπορεί να χρησιμοποιηθεί για να ρυθμίσετε τη διαδρομή cookie στον διακομιστή. Η κάθετο "/" σημαίνει ότι το cookie θα είναι διαθέσιμο σε ολόκληρο τον τομέα. Οι υποκατάλογοι περιορίζουν την πρόσβαση των cookie στον υποτομέα.
  • Το "[domain]" είναι προαιρετικό, μπορεί να χρησιμοποιηθεί για τον ορισμό της ιεραρχίας πρόσβασης στα cookie, δηλ. Www.cookiedomain.com σημαίνει ολόκληρο τον τομέα, ενώ το www.sub.cookiedomain.com περιορίζει την πρόσβαση cookie στο www.sub.cookiedomain.com και τα τομείς. Λάβετε υπόψη ότι είναι πιθανό να έχετε έναν υποτομέα ενός υποτομέα εφόσον οι συνολικοί χαρακτήρες δεν υπερβαίνουν τους 253 χαρακτήρες.
  • Το "[safe]" είναι προαιρετικό, η προεπιλογή είναι false Χρησιμοποιείται για να προσδιορίσει εάν το cookie αποστέλλεται μέσω https εάν έχει οριστεί σε true ή http εάν έχει οριστεί σε false.
  • Το "[Httponly]" είναι προαιρετικό. Εάν έχει οριστεί σε αληθές, τότε μόνο οι γλώσσες δέσμης ενεργειών από την πλευρά του πελάτη, δηλαδή η JavaScript δεν μπορούν να έχουν πρόσβαση σε αυτές.

Σημείωση: η λειτουργία cookie php set πρέπει να εκτελεστεί πριν από την ετικέτα ανοίγματος HTML.

Ας δούμε τώρα ένα παράδειγμα που χρησιμοποιεί cookies.

Θα δημιουργήσουμε ένα βασικό πρόγραμμα που μας επιτρέπει να αποθηκεύουμε το όνομα χρήστη σε ένα cookie που λήγει μετά από δέκα δευτερόλεπτα.

Ο παρακάτω κώδικας δείχνει την εφαρμογή του παραπάνω παραδείγματος "cookies.php".

Παραγωγή:

the cookie has been set for 60 seconds

Ανάκτηση της τιμής Cookie

Δημιουργήστε ένα άλλο αρχείο με το όνομα "cookies_read.php" με τον ακόλουθο κώδικα.

Παραγωγή:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Σημείωση: Το $ _COOKIE είναι μια ενσωματωμένη PHP ενσωματωμένη μεταβλητή.

Περιέχει τα ονόματα και τις τιμές όλων των καθορισμένων cookie.

Ο αριθμός των τιμών που

Ο πίνακας $ _COOKIE μπορεί να περιέχει εξαρτάται από το μέγεθος της μνήμης που έχει οριστεί στο php.ini.

Η προεπιλεγμένη τιμή είναι 1 GB.

Δοκιμή της εφαρμογής μας.

Ας υποθέσουμε ότι έχετε αποθηκεύσει τα αρχεία PHP σας στο φάκελο phptus.

  • Βήμα 1 - ανοίξτε το πρόγραμμα περιήγησης ιστού και εισαγάγετε τη διεύθυνση URL http: //localhost/phptuts/cookies_read.php

Σημείωση: Εμφανίστηκε μόνο ένας κενός πίνακας

  • Βήμα 2 - Πρόγραμμα περιήγησης στη διεύθυνση URL http: //localhost/phptuts/cookies.php

  • Βήμα 3 - Επιστρέψτε στην πρώτη καρτέλα και, στη συνέχεια, κάντε κλικ στο κουμπί ανανέωσης

Περιμένετε για ένα λεπτό και κάντε ξανά κλικ στο κουμπί ανανέωσης. Ποια αποτελέσματα πήρες;

Διαγραφή Cookies

  • Εάν θέλετε να καταστρέψετε ένα cookie πριν από την ώρα λήξης του, τότε ορίζετε την ώρα λήξης σε μια ώρα που έχει ήδη περάσει.
  • Δημιουργήστε ένα νέο αρχείο με όνομα cookie_destroy.php με τον ακόλουθο κωδικό
  • Επαναλάβετε τα βήματα 1 έως 3 από την παραπάνω ενότητα σχετικά με την ανάκτηση τιμών cookie.
  • Ανοίξτε τη διεύθυνση URL http: //localhost/phptuts/cookie_destroy.php
  • Μεταβείτε στη διεύθυνση URL http: //localhost/phptuts/cookies_read.php ποια αποτελέσματα εμφανίζει;

Τι είναι μια συνεδρία;

  • Η περίοδος σύνδεσης είναι μια καθολική μεταβλητή που είναι αποθηκευμένη στο διακομιστή.
  • Σε κάθε περίοδο λειτουργίας εκχωρείται ένα μοναδικό αναγνωριστικό που χρησιμοποιείται για την ανάκτηση αποθηκευμένων τιμών.
  • Κάθε φορά που δημιουργείται μια περίοδος σύνδεσης, ένα cookie που περιέχει το μοναδικό αναγνωριστικό περιόδου σύνδεσης αποθηκεύεται στον υπολογιστή του χρήστη και επιστρέφεται με κάθε αίτημα στον διακομιστή. Εάν το πρόγραμμα περιήγησης πελάτη δεν υποστηρίζει cookie, το μοναδικό αναγνωριστικό περιόδου λειτουργίας php εμφανίζεται στη διεύθυνση URL
  • Οι συνεδρίες έχουν την ικανότητα να αποθηκεύουν σχετικά μεγάλα δεδομένα σε σύγκριση με τα cookie.
  • Οι τιμές περιόδου λειτουργίας διαγράφονται αυτόματα όταν το πρόγραμμα περιήγησης είναι κλειστό. Εάν θέλετε να αποθηκεύσετε μόνιμα τις τιμές, τότε θα πρέπει να τις αποθηκεύσετε στη βάση δεδομένων.
  • Όπως και η μεταβλητή πίνακα $ _COOKIE, οι μεταβλητές περιόδου λειτουργίας αποθηκεύονται στη μεταβλητή πίνακα $ _SESSION. Ακριβώς όπως τα cookie, η συνεδρία πρέπει να ξεκινήσει πριν από οποιαδήποτε ετικέτα HTML.

Γιατί και πότε να χρησιμοποιείτε τις συνεδρίες;

  • Θέλετε να αποθηκεύσετε σημαντικές πληροφορίες, όπως το αναγνωριστικό χρήστη, με μεγαλύτερη ασφάλεια στον διακομιστή, όπου οι κακόβουλοι χρήστες δεν μπορούν να τα αντιμετωπίσουν.
  • Θέλετε να μεταβιβάσετε τιμές από τη μία σελίδα στην άλλη.
  • Θέλετε την εναλλακτική λύση για τα cookies σε προγράμματα περιήγησης που δεν υποστηρίζουν cookie.
  • Θέλετε να αποθηκεύσετε καθολικές μεταβλητές με αποτελεσματικό και ασφαλέστερο τρόπο σε σύγκριση με τη μεταφορά τους στη διεύθυνση URL
  • Αναπτύσσετε μια εφαρμογή, όπως ένα καλάθι αγορών που πρέπει να αποθηκεύει προσωρινά πληροφορίες με χωρητικότητα μεγαλύτερη από 4KB.

Δημιουργία συνεδρίας

Για να δημιουργήσετε μια περίοδο λειτουργίας, πρέπει πρώτα να καλέσετε τη συνάρτηση PHP session_start και μετά να αποθηκεύσετε τις τιμές σας στη μεταβλητή πίνακα $ _SESSION.

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

Ο παρακάτω κώδικας δείχνει τον τρόπο δημιουργίας και ανάκτησης τιμών από περιόδους σύνδεσης

Παραγωγή:

You are visitor number 1

Καταστροφή μεταβλητών περιόδου σύνδεσης

Η συνάρτηση session_destroy () χρησιμοποιείται για να καταστρέψει ολόκληρες τις μεταβλητές συνεδρίας Php.

Εάν θέλετε να καταστρέψετε μόνο ένα στοιχείο περιόδου λειτουργίας, χρησιμοποιείτε τη συνάρτηση unset ().

Ο παρακάτω κώδικας δείχνει τον τρόπο χρήσης και των δύο μεθόδων.

Το Session_destroy καταργεί όλα τα δεδομένα περιόδου σύνδεσης, συμπεριλαμβανομένων των cookie που σχετίζονται με την περίοδο λειτουργίας.

Το Unset απελευθερώνει μόνο τις μεμονωμένες μεταβλητές περιόδου σύνδεσης.

Άλλα δεδομένα παραμένουν ανέπαφα.

Περίληψη

  • Τα cookie είναι μικρά αρχεία που αποθηκεύονται στον υπολογιστή του χρήστη
  • Τα cookie μπορούν να διαβαστούν μόνο από τον τομέα έκδοσης
  • Τα cookie μπορεί να έχουν χρόνο λήξης, εάν δεν έχει οριστεί, τότε το cookie λήγει όταν το πρόγραμμα περιήγησης είναι κλειστό
  • Οι συνεδρίες είναι σαν καθολικές μεταβλητές που είναι αποθηκευμένες στον διακομιστή
  • Σε κάθε περίοδο λειτουργίας παρέχεται ένα μοναδικό αναγνωριστικό αναγνώρισης που χρησιμοποιείται για την παρακολούθηση των μεταβλητών για έναν χρήστη.
  • Τόσο τα cookie όσο και οι συνεδρίες πρέπει να ξεκινήσουν πριν από την αποστολή ετικετών HTML στο πρόγραμμα περιήγησης.