Cookies

Τα cookies είναι μικρά αρχεία κειμένου που αποθηκεύονται στον υπολογιστή και περιέχουν δεδομένα στη μορφή name=value. Για παράδειγμα: visitor=abc123.

Σκοπός είναι να μπορεί η εφαρμογή να ταυτοποιεί τον χρήστη (μηχάνημα) και να αποθηκεύει σχετικές πληροφορίες.

Για γραφή (ή αποθήκευση) και ανάγνωση cookies στο μηχάνημα, χρησιμοποιείται η εντολή: document.cookie.

Γραφή cookie με javascript

Για να αποθηκεύσετε ένα cookie στον υπολογιστή με javascript γράφετε για παράδειγμα:

document.cookie = "userid=Fe80gRcijyH4mgPO";

Γενικά, το cookie αποθηκεύετε ως ένα string και οι επιπλέον παράμετροι που μπορείτε να περάσετε χωρίζονται με ένα ερωτηματικό (;).

Συνολικά έχουμε:

  • Όνομα (name)
  • Τιμή (value)
  • Ημερομηνία λήξης (expires)
  • Διαδρομή (path)

Για παράδειγμα:

document.cookie = "userid=Fe80gRcijyH4mgPO; expires=Sun, 13 Jun 2021 20:31:59 GMT; path=/"

Για το παραπάνω παράδειγμα έχουμε: name = userid, value = Fe80gRcijyH4mgPO, expires = Sun, 13 Jun 2021 20:31:59 GMT, path = /

Όταν φτάσει ο χρόνος λήξης το cookie διαγράφεται.

Μπορείτε να χρησιμοποιήσετε μια συνάρτηση όπως παρακάτω για να γράψετε ένα cookie.

function setCookie(name, value, days) {
	let date = new Date();
	date.setTime(date.getTime() + (days*24*60*60*1000));
	date = date.toUTCString();
	document.cookie = `${name} = ${value}; expires=${date}; path=/`;
}

Για σωστή μορφή που αφορά το χρόνο λήξης μπορείτε να χρησιμοποιήσετε τη μέθοδο toUTCString() όπως φαίνεται στο παραπάνω παράδειγμα.

Το name και value πρέπει να κωδικοποιηθούν στη σωστή μορφή (format) και χρησιμοποιείται η εντολή encodeURIComponent(). 'Ετσι, θα πρέπει να έχουμε:

name = encodeURIComponent(name)

και

value = encodeURIComponent(value)

Εννοείται ότι θα πρέπει να χρησιμοποιείται η εντολή decodeURIComponent() για την ανάγνωση.

Διαγραφή cookie

Για τη διαγραφή ενός cookie δημιουργείτε πάλι το ίδιο cookie με περασμένη ημερομηνία. Για παράδειγμα:

document.cookie = "userid=Fe80gRcijyH4mgPO; expires=Sun, 13 Jun 2020 20:31:59 GMT; path=/"

Η θα μπορούσατε να καλέσετε την παραπάνω συνάρτηση με days = 0 ή days = -1. Για παράδειγμα:

setCookie("userid", "Fe80gRcijyH4mgPO", 0)

Ανάγνωση cookie

Για την ανάγνωση των cookies γράφετε:

let cookies = document.cookie;

Η παραπάνω εντολή θα επιστρέψει τα cookies ως string στη μορφή: cookie1=value1; cookie2=value2; cookie3=value3;

Για να διαβάσετε ή να αναζητήσετε κάποιο cookie θα πρέπει να χρησιμοποιήσετε κάποια σχετική συνάρτηση που θα τα ξεχωρίζει όπως η παρακάτω.

function getCookie(cname) {
	let name = cname + "=";
	let decodedCookie = decodeURIComponent(document.cookie);
	let ca = decodedCookie.split(';'); 
	for(let i = 0; i <ca.length; i++) {
		let c = ca[i];
		while (c.charAt(0) == ' ') {
			c = c.substring(1);
		}
		if (c.indexOf(name) == 0) {
			return c.substring(name.length, c.length);
		}
	}
	return "";
}

H decodeURIComponent() χρησιμοποιείται σε περίπτωση που το string έχει γίνει encoded με την εντολή encodeURIComponent().