Comment mettre plusieurs valeurs dans un seul cookie à l'aide d'un séparateur?
Ci-dessous est l'exemple que je suis en train d'essayer de comprendre pourquoi ça ne fonctionne pas exactement.
Il continue de me donner les valeurs null.
Je suis en train d'apprendre comment mettre plusieurs valeurs dans un seul cookie.
Chaque cookie contient une paire nom=valeur, donc si vous avez besoin de stocker plusieurs morceaux séparés de données telles que le nom de l'utilisateur, l'âge et le numéro de membre, vous aurez besoin de trois différentes cookies.
Au lieu de le faire, je suis en utilisant un délimiteur technique de diviser pour que je puisse en utiliser moins de cookies.
Veuillez me montrer des exemples de cette mise en œuvre correctement si vous le pouvez. J'ai vu des matériaux pour d'autres langages de programmation, mais je voudrais savoir comment il est fait en JavaScript, en particulier.
<!DOCTYPE html>
<html>
<head>
<title> Using a delimiter to save on cookies used</title>
<script>
function createCookie(name, value, days, path, domain, secure) {
if (days) {
var date=new Date();
date.setTime(date.getTime()+ (days*24*60*60*1000));
var expires=date.toGMTString();
}
else var expires = "";
cookieString= name + "=" + escape (value);
if (expires)
cookieString += "; expires=" + expires;
if (path)
cookieString += "; path=" + escape (path);
if (domain)
cookieString += "; domain=" + escape (domain);
if (secure)
cookieString += "; secure";
document.cookie=cookieString;
}
function getCookie(name) {
var nameEquals = name + "=";
var crumbs=document.cookie.split('|');
for (var i = 0; i<crumbs.length; i++) {
var crumb = crumbs [i];
if (crumb.indexOf(nameEquals) == 0) {
return unescape (crumb.substring(nameEquals.length, crumb.length));
}
}
return null;
}
function deleteCookie(name){
createCookie(name, "", -1);
}
var userdata="Joe|31|Athlete";
createCookie("user", userdata);
var myUser=getCookie("user");
var myUserArray=myUser.split('|');
var name=myUserArray[0];
var age=myUserArray[1];
var profession=myUserArray[2];
</script>
</head>
<body>
</body>
</html>
OriginalL'auteur weichan8t1 | 2013-05-27
Vous devez vous connecter pour publier un commentaire.
n'utilisez pas de '|' comme séparateur, sa mise en œuvre différemment selon les navigateurs (utilisation de telles choses comme '-', '+', '.' etc pour votre délimiteur). quand je vérifie firefox > informations sur le site, il me dit qu'il y a un cookie, mais que le contenu est
Joe%7C31%7CAthlete
. dans ma version, j'ai mis le délimiteur dans une variable que nous définissons avant tout (j'ai pris '---', mais vous pouvez le modifier si vous le souhaitez):quand j'ai tester, il fonctionne correctement: il enregistre "Joe" dans
name
, "31" enage
et "Sportif" dansjob
j'ai ajouté un peu d'alerte pour le débogage de sorte que vous pouvez tester
bye, j'espère que je pourrais aider 🙂
OriginalL'auteur svenlr
Bien, comme pour les délimiteurs mentionné par Sven L. Vous avez Joe%7C31%7CAthlete parce que
Comme à d'autres séparateurs mentionnés, veuillez consulter Caractères autorisés dans les cookies.
Que pour moi dans firefox, '-' et '.' ont été stockées en clair dans un seul octet, mais " + " a été convertie en valeur codée %2B
Il est logique de choisir les séparateurs de ne pas être encodés. De cette façon, le séparateur de ne prendre 1 octet. Ainsi, on peut mettre plus de choses utiles en valeur du cookie en tenant compte de sa limite de taille de 4 ko.
OriginalL'auteur Alf Tau
Pour moi votre code fonctionne parfaitement sur Chrome.
Cependant, j'ai eu à le faire tourner sur un serveur web - si je viens d'ouvrir un fichier html, il n'enregistre pas les cookies.
Si vous avez installé python sur votre machine, vous pouvez exécuter un minimaliste python serveur avec cette commande à partir du répertoire avec des fichiers html que vous voulez servir:
Ensuite, il suffit d'aller à
http://127.0.0.1:8000
avec votre navigateur et le site Web devrait fonctionner.Bien sûr, vous pouvez également utiliser n'importe quel autre serveur http comme apache ou tout ce que vous souhaitez.
Ce qui est étrange, pour moi, il fonctionne sans aucune modification. Est votre cookie mettre en place correctement? (ie. est-il une chaîne de caractères dans
document.cookie
?)OriginalL'auteur zeroos