Sessions

Τί είναι τα PHP Sessions;

Όταν ανοίγετε μια desktop εφαρμογή στον Η/Υ σας, την χρησιμοποιείτε, κάνετε την δουλειά σας και στην συνέχεια την κλείνετε. Κάτι τέτοιο είναι τα sessions, δηλαδή ο Η/Υ σας γνωρίζει ανά πάσα στιγμή ποιός χρήστης είστε. Γνωρίζει πότε ξεκινάτε μια εφαρμογή και πότε την τερματίζετε. Αλλά στο Διαδίκτυο δεν λειτουργούν έτσι τα πράγματα. Στο web υπάρχει ένα πρόβλημα: Ο web server δεν μπορεί γνωρίζει ανά πάσα στγμή ποιός είστε και τί κάνετε, γιατί δεν διατηρείται η κατάσταση που βρίσκεστε. Κάθε φορά που στέλνετε ένα αίτημα στον web server, ξεχνάει την προηγούμενη κατάσταση και είναι σαν να εκτελείται από κάποιον άλλο χρήστη για πρώτη φορά. Αυτό το πρόβλημα ευτυχώς λύνεται με τα sessions.

Τα sessions φροντίζουν να σας θυμάται ο web server ποιός είστε και τί κάνετε. Έτσι, με κάθε αίτημα που στέλνετε στον web server, με την βοήθεία των sessions ο web server σας θυμάται και έτσι διεκπεραιώνονται καλύτερα οι εργασίες.

Συγκεκριμένα τα sessions είναι μεταβλητές που αποθηκεύουν πληροφορίες για τον χρήστη οι οποίες χρησιμοποιούνται από σελίδα σε σελίδα στον ίδιο web server. Τα sessions διατηρούνται μέχρι να κλείσει ο χρήστης τον web browser.

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

Δημιουργώντας ένα PHP Session

Ένα 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.

Εξαγωγή τιμών από μεταβλητές PHP Session

Στη συνέχεια, θα δημιουργήσουμε μια ακόμα ιστοσελίδα με όνομα 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> 

Αλλαγή μιας PHP Session μεταβλητής

Για να πραγματοποιηθεί μια αλλαγή στην τιμή μιας 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.

Τερματισμός ενός PHP 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>