Δουλεύοντας με Sessions
Τι είναι;
Κάθε φορά που μεταβαίνουμε από μια σελίδα σε μια άλλη, ό,τι μεταβλητές και δεδομένα είχαμε αποθηκεύσει, χάνονται! Δεν μπορούμε να μεταβιβάσουμε τιμές μεταβλητών. Την λύση στο πρόβλημα μας δίνουν οι Sessions όπου αποθηκεύονται στον διακομιστή και κρατούν δεδομένα, τα οποία είναι προσπελάσιμα σε όσες σελίδες θέλουμε. Ανάλογα είναι και τα cookies, με την διαφορά ότι τα cookies αποθηκεύονται στον Η/Υ του επισκέπτη και τροποποιούνται ή απενεργοποιούνται από τον χρήστη.Χαρακτηριστικά των Sessions
Τα Sessions, που δημιουργούνται, χαρακτηρίζονται από ένα μοναδικό UID (Unique Identification). Αυτό αποτρέπει δυο χρήστες να χρησιμοποιήσουν την ίδια πηγή δεδομένων. Η ζωή μιας Session διαρκεί μέχρις ότου παραμείνει ανενεργή για ορισμένο χρονικό διάστημα από τον διακομιστή (προκαθορισμένο 180λεπτά - το λεγόμενο timeout)Ξεκιώντας μια Session
Αν θέλουμε το έγγραφό μας να περιέχει Sessions και να διαβάζει/γράφει δεδομένα σε αυτές, θα πρέπει να καλεί πάνω πάνω την session_start();
<?php session_start(); ?>
<html>
<body>
Αρχίζω ένα πρόγραμμα με Sessions! </body>
</html>
<html>
<body>
Αρχίζω ένα πρόγραμμα με Sessions! </body>
</html>
Χρήση της Session
Η Session για την PHP δεν είναι τίποτα άλλο από ένα Array το οποίο χαρακτηρίζεται από δείκτες και τιμές. Για να αναθέσω έναν δείκτη στο session γράφω $_SESSION['deiktis'];
<?php
session_start();
$_SESSION['onoma']= "Δημήτρης";
if (isset($_SESSION['onoma']))
echo "Γεια σου ".$_SESSION['onoma'];
else
echo "Δεν σε αναγνωρίζω";
?>
Στο παράδειγμα αυτό αναθέτουμε την τιμή Δημήτρης στον δείκτη Όνομαsession_start();
$_SESSION['onoma']= "Δημήτρης";
if (isset($_SESSION['onoma']))
echo "Γεια σου ".$_SESSION['onoma'];
else
echo "Δεν σε αναγνωρίζω";
?>
Η isset() ελέγχει αν υπάρχει η μεταβλητή (και επιστρέφει true/false ανάλογα)
Και με την echo εξάγουμε το String που επιθυμούμε.
(Όταν θέλουμε να ενώσουμε δυο ή περισσότερα string ή μεταβλητές, χρησιμοποιούμε το σύμβολο . (τελεία))
Διαγράφοντας μια Session
Αν θέλουμε να καθαρίσουμε ένα δείκτη από μια τιμή, απλά καλούμε την unset($_SESSION['deiktis']) Μετά την εντολή αυτή ο δείκτης deiktis θα υπάρχει αλλά δεν θα έχει κάποια τιμή!Αν θέλουμε να διαγράψουμε όλη την session (χρήση log out για παράδειγμα) τότε καλούμε την session_destroy() και χάνεται όλο το array και όλες οι τιμές.
<?php
session_start();
session_destroy();
?>
session_start();
session_destroy();
?>







