PHP comment stringify tableau et stocker des cookies
J'ai un tableau comme ceci
$valeur = {array('id'=>$id, 'email'=>$email, 'token'=>$token)}
Je veux stringify le tableau puis le coder puis le stocker dans cookie "login". Comment faites-vous cela ? Aussi s'il vous plaît dites-moi comment décoder et lire la valeur stockée.
Edit:
J'ai essayé serialize/unserialize, mais il ne fonctionne pas comme prévu. par exemple,
$value = serialize(array('id'=>33, 'email'=>'[email protected]', 'token'=>'e9aa0966773d68e0fbf9cb21fc2877b4'));
echo $value; //a:3:{s:2:"id";i:33;s:5:"email";s:20:"[email protected]";s:5:"token";s:32:"e9aa0966773d68e0fbf9cb21fc2877b4";}
Mais lorsque la valeur aller à cookie, ça ressemble à ça
a%3A3%3A%7Bs%3A2%3A%22id%22%3Bs%3A1%3A%226%22%3Bs%3A5%3A%22email%22%3Bs%3A20%3A%22craigcosmo%40gmail.com%22%3Bs%3A5%3A%22token%22%3Bs%3A32%3A%22e9aa0966773d68e0fbf9cb21fc2877b4%22%3B%7D
- Le cookie ne sera jamais en texte brut. La raison en est, comment il est stocké dans l'en-tête HTTP. Le
Cookie:
en-tête utilise des caractères comme des virgules et des points-virgules pour les séparateurs, ils ont donc besoin d'être échappé (PHP prend la valeur du cookie et effectue une url_encode avant la sortie vers le client) - donc, pour lire la valeur du cookie je url_decode en premier?
- dans php url_decode devrait se faire automatiquement quand il est la construction de l' $_COOKIE superglobale.
Vous devez vous connecter pour publier un commentaire.
il y a un sérialiser/unserialize fonction pour convertir un tableau en une chaîne et à l'arrière.
Edit:
Lorsque vous stockez une chaîne de cookie (setcookie), php doit faire un encoder sur la chaîne. Cela empêche tous les caractères dans la chaîne enregistrée à cookie interférer avec les autres en-têtes. Lorsque la page est chargée ensuite, php récupère le cookie et effectue automatiquement une url décoder sur la valeur du cookie pour retourner à la valeur précédente. Aussi loin que ce qui est stocké dans le cookie, cela ne devrait pas d'importance au sein de php car php va faire l'encoder/décoder automatiquement. Maintenant, si vous êtes obtenir le cookie dans un autre langage comme javascript, alors oui, vous obtiendrez la chaîne brute de retour. Dans ce cas, vous pouvez utiliser quelque chose comme decodeURI en JS pour obtenir la valeur d'origine de retour.
json_encode
/json_decode
plus sûr alors? C'est ce que j'ai été l'aide sur la saisie de l'utilisateur.json_encode/la fonction json_decode
Pouvez également utiliser sérialiser/unserialize:
Peut-être.
Mise à JOUR
Avec ce code:
Vous permettraient de générer les suivantes:
EDIT2
Vous voyez la valeur codée basée sur la façon dont le protocole HTTP transferts de cookies. Il y a deux têtes dans un cookie de transfert:
Set-Cookie
&Cookie
. L'un est serveur->client, les autres les autres est client->serveur, respectueusement.Lorsque PHP définit le "cookie" (à l'aide de la fonction setcookie par exemple) de PHP est vraiment juste à court de remettre le suivant:
qui, en PHP se traduit par:
Si vous aviez des personnages comme
:
ou un ESPACE, le navigateur ne sais pas où le cookie propriétés de début et de fin.