Όταν ανοίγετε μια desktop εφαρμογή στον Η/Υ σας, την χρησιμοποιείτε, κάνετε την δουλειά σας και στην συνέχεια την κλείνετε. Κάτι τέτοιο είναι τα sessions, δηλαδή ο Η/Υ σας γνωρίζει ανά πάσα στιγμή ποιός χρήστης είστε. Γνωρίζει πότε ξεκινάτε μια εφαρμογή και πότε την τερματίζετε. Αλλά στο Διαδίκτυο δεν λειτουργούν έτσι τα πράγματα. Στο web υπάρχει ένα πρόβλημα: Ο web server δεν μπορεί γνωρίζει ανά πάσα στγμή ποιός είστε και τί κάνετε, γιατί δεν διατηρείται η κατάσταση που βρίσκεστε. Κάθε φορά που στέλνετε ένα αίτημα στον web server, ξεχνάει την προηγούμενη κατάσταση και είναι σαν να εκτελείται από κάποιον άλλο χρήστη για πρώτη φορά. Αυτό το πρόβλημα ευτυχώς λύνεται με τα sessions.
Τα sessions φροντίζουν να σας θυμάται ο web server ποιός είστε και τί κάνετε. Έτσι, με κάθε αίτημα που στέλνετε στον web server, με την βοήθεία των sessions ο web server σας θυμάται και έτσι διεκπεραιώνονται καλύτερα οι εργασίες.
Συγκεκριμένα τα sessions είναι μεταβλητές που αποθηκεύουν πληροφορίες για τον χρήστη οι οποίες χρησιμοποιούνται από σελίδα σε σελίδα στον ίδιο web server. Τα sessions διατηρούνται μέχρι να κλείσει ο χρήστης τον web browser.
Συνεπώς, τα sessions είναι μεταβλητές οι οποίες διατηρούν πληροφορίες για κάθε χρήστη ξεχωριστά και είναι διαθέσιμες για όλες τις ιστοσελίδες της εφαρμογής.
Ένα session δημιουργείται με την συνάρτηση session_start()
.
Οι Session μεταβλητές ορίζονται ως PHP global variableQ $_SESSION
.
Στο σημείο αυτό, θα δημιουργήσουμε μια νέα ιστοσελίδα με το όνομα demo_session1.php
. Μέσα σε αυτή την ιστοσελίδα, θα δημιουργήσουμε ένα νέο PHP session και θα ορίσουμε μερικές session μεταβλητές:
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
Σημείωση: Η συνάρτηση session_start()
πρέπει να δηλώνεται τέρμα επάνω στον κώδικα πάνω από οποιοδήποτε HTML tag.
Στη συνέχεια, θα δημιουργήσουμε μια ακόμα ιστοσελίδα με όνομα demo_session2.php
. Από αυτή την σελίδα, θα αποκτήσουμε πρόσβαση στις πληροφορίες που αποθηκεύσαμε στην προηγούμενη σελίδα demo_session2.php
.
Οι μεταβλητές session δεν μεταφέρονται ξεχωριστά από σελίδα σε σελίδα, αλλά γίνεται ανάκτηση μετά από κάθε session ανοίγουμε στην αρχή της σελίδας με την συνάρτηση session_start()
.
Επίσης, αξίζει να σημιεωθεί οτι σε όλες τις μεταβλητές session οι τιμές τους αποθηκεύονται σε μια global $_SESSION μεταβλητή.
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
Για να πραγματοποιηθεί μια αλλαγή στην τιμή μιας session μεταβλητής, απλά αρχικοποιούμε το session με την τιμή που επιθυμούμε να αποθηκεύσουμε. Όπως ακριβώς θα κάναμε με μια τυπική μεταβλητή στην PHP:
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
Με την συνάρτηση print_r()
εμφανίζονται όλες οι τιμές που είναι αποθηκευμένες στο session.
Για να διαγράψουμε-τερματίσουμε όλα τα global session χρησιμοποιούμε την συνάρτηση session_unset()
και session_destroy()
:
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>