Cookies

Τί είναι τα Cookies;

Τα cookies συχνά χρησιμοποιούνται για την ταυτοποίηση των χρηστών. Το cookie είναι ένα μικρό αρχείο το οποίο τοποθετείται από τον web server στον web browser του χρήστη. Κάθε φορά που καλείται η ιστοσελίδα από τον web browser του ίδιου υπολογιστή, τότε ο web server ζητά το cookie από τον χρήστη (συγκεκριμένα στον web browser) για να γίνει η ταυτοποίηση. Με την PHP υπάρχει η δυνατότητα να δημιουργήσουμε και να χρησιμοποιήσουμε τα cookies πολύ εύκολα και απλά.

Ένα cookie δημιουργείται στην PHP με την εντολή setcookie().

Σύνταξη: setcookie(name, value, expire, path, domain, secure, httponly);

Η μοναδική παράμετρος που απαιτείται στην setcookie() είναι η name. Όλες οι υπόλοιπες είναι προαιρετικές.

Δημιουργία και επεξεργασία ενός cookie

Στο παρακάτω παράδειγμα δημιουργείται ένα cookie με όνομα “user” με τιμή “John Doe”. Ορίζεται οτι το cookie θα λήξει σε 30 ημέρες (86400 * 30). Το “/” σημαίνει οτι το cookie είναι διαθέσιμο για ολόκληρη την ιστοσελίδα (διαφορετικά, επιλέγουμε συγκεκριμένο directory που επιθυμούμε).

Στη συνέχεια, λαμβάνουμε την τιμή του cookie “user” (χρησιμοποιώντας την global variable της PHP $_COOKIE). Πρώτα όμως ελέγχουμε με την isset() εαν έχει δημιουργηθεί το cookie μας. Εαν επιστρέψει η isset() TRUE, τότε το cookie μας είχε ήδη δημιουργηθεί ενώ αν επιστρέψει FALSE τότε το cookie μας δεν είναι δημιουργημένο.

<?php
$cookie_name = "user";
$cookie_value = "John Doe";

setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>

<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) 
{
    echo "Cookie named '" . $cookie_name . "' is not set!";
} 
else 
{
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html> 

Σημείωση: Η setcookie() function πρέπει να τοποθετείται ΠΡΙΝ από το tag.

Αλλαγή ενός cookie

Για να αλλαχθεί ένα cookie, απλά δημιουργούμε ξανά το cookie με την εντολή της php setcookie().

<?php
$cookie_name = "user";
$cookie_value = "Alex Porter";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) 
{
    echo "Cookie named '" . $cookie_name . "' is not set!";
} 
else 
{
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html> 

Διαγραφή ενός Cookie

Για να διαγράψουμε ένα cookie χρησιμοποιούμε την setcookie() θέτοντας μια ημερομηνία στο παρελθόν.

<?php
// set the expiration date to one hour ago
setcookie("user", "", time() - 3600, "/");
?>
<html>
<body>

<?php
echo "Cookie 'user' is deleted.";
?>

</body>
</html> 

Έλεγχος αν τα cookies είναι ενεργοποιημένα

Στο παρακάτω παράδειγμα δημιουργούμε ένα cookie με την setcookie() και στην συνέχεια ελέγχουμε με την count() μετρώντας αν έχουμε δημιουργήσει τουλάχιστον ένα cookie. Εαν έχει δημιουργηθεί τουλάχιστον 1 cookie, τότε αυτό σημαίνει οτι είναι ενεργοποιημένα. Διαφορετικά όπως είναι ευκολονόητο δεν είναι.

<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>

<?php
if(count($_COOKIE) > 0) 
{
    echo "Cookies are enabled.";
} 
else 
{
    echo "Cookies are disabled.";
}
?>

</body>
</html>