Comment stocker une grande chaîne JSON dans un cookie? Je dois utiliser le cookie seulement, la session n'est pas une option dans mon cas. Quelqu'un peut-il publier un exemple de code pour compresser une chaîne et la stocker dans un cookie, puis l'extraire avec succès. Merci.Comment stocker une grande chaîne JSON dans un cookie en utilisant PHP
Répondre
La compression des données ne semble pas être une bonne idée. Au contraire, je le garde dans une base de données et ne stocke que l'ID de l'entrée de la base de données dans un cookie. Cela empêcherait également les gens d'altérer les données, bien que l'altération de l'identifiant soit toujours possible. Utiliser des sessions serait mieux et éliminer cela.
Cependant, si vous insistez sur le stockage des données dans un cookie, vous pouvez compresser les données à l'aide gzcompress()
, gzdeflate()
ou gzencode()
. Ceux-ci offrent tous une compression. gzdeflate()
serait le meilleur choix pour votre problème, vu qu'il est le plus efficace dans l'espace.
$compressedJSON = gzdeflate($json, 9);
setcookie('json', $compressedJSON);
Et pour le lire
$compressedJSON = $_COOKIE['json'];
$json = gzinflate($compressedJSON);
Gardez à l'esprit que même si la compression sera suffisant pour vos données pour rester dans la limite de 4 Ko, vous pourriez éventuellement dépasser que, si le montant de JSON les données dont vous avez besoin sont stockées.
Je vous suggère toujours d'utiliser une base de données à la place.
Notez que pour utiliser la fonction gz *, l'extension zlib doit être activée, par défaut elle ne l'est pas (sur les machines autres que Windows). –
Le stockage de telles données dans DB est la meilleure suggestion, thnx. – Dev
Quelque chose comme ça?
Encode
$sJSON = json_encode($sSomeJSONData);
setcookie('json', $sJSON);
Decode
$sJSON = json_decode($_COOKIE['json']);
--- EDIT ----
Go avec la réponse de Kristian pour l'utilisation de gzip ou une base de données, il est plus logique ... MAIS si vous ne pouvez pas utiliser une base de données, vous pouvez créer la session manuellement.
Toute une session est, techniquement, un fichier texte stocké en dehors de l'arborescence contenant des données. Vous pouvez dupliquer ce processus en utilisant quelque chose comme uniqid()
pour générer un "nom de session".
Créez un fichier texte, dans un répertoire donné, en utilisant ce "nom de session" comme nom de fichier et stockez le "nom de session" dans votre cookie.
Ensuite, il suffit d'utiliser serialize()
, unserialize()
et file_put_contents()
, file_get_contents()
pour transférer vos données entre votre programme et votre fichier texte, en utilisant les données dans le cookie pour trouver le fichier texte.
Il faudrait des vérifications de sécurité et de prévention des détournements, mais le principe est le son.
J'ai besoin de compresser une chaîne JSON avant cela. La chaîne JSON est trop longue. – Dev
Il y a une limite de 4 Ko pour l'ensemble du cookie, y compris le nom, la valeur, la date d'expiration, etc. Je pense que @dev demande comment stocker une donnée dans le cookie si les données dépassent cette limite. – marvin
@marvin: super! tu es presque là. Je cherchais une solution pour compresser les données et les stocker dans un cookie. Mais si quelqu'un peut poster un message similaire (par exemple en utilisant plusieurs cookies), je serai reconnaissant. – Dev
Si vos informations sont trop volumineuses, vous pouvez utiliser le stockage local à la place. Tous les navigateurs ne prennent pas en charge le stockage local, mais tous les navigateurs modernes le font. Si votre cookie est trop grand, vous courez le risque d'obtenir une erreur HTTP 431.
Donc, vous n'avez pas de problèmes de taille, et vous n'avez pas besoin de passer un grand cookie à chaque requête, vous devriez juste stocker un identifiant unique dans le cookie. Vous pouvez ensuite récupérer le grand objet de données à partir de memcache, mysql ou de tout autre stockage côté serveur en utilisant l'identifiant unique.Aucune session requise.
pourriez-vous me dire combien grand coolie pouvons-nous stocker .... pouvons-nous stocker le cookie comme 500 mots? – StaticVariable
Un cookie peut aller jusqu'à 4K. C'est tout le cookie (métadonnées + données). Si vous êtes proche de cela et que vous devez stocker des éléments localement, vous devez utiliser le stockage local. Tous les navigateurs modernes le supportent. –
- 1. Comment stocker un cookie avec php
- 2. Comment comparer une grande chaîne en PHP
- 3. Comment stocker plusieurs valeurs dans un cookie en utilisant javascript?
- 4. En utilisant PHP, comment stocker les informations d'identification dans un cookie avec une authentification de base?
- 5. Comment stocker une matrice dans un cookie?
- 6. Parse une chaîne JSON en utilisant php
- 7. Comment stocker une valeur de cookie en tant que chaîne?
- 8. comment stocker une chaîne en utilisant array dans c?
- 9. Comment stocker un objet dans un cookie?
- 10. Comment analyser une chaîne JSON en utilisant PHP
- 11. Dump grande chaîne JSON à S3 en utilisant Javascript seulement
- 12. Comment stocker une chaîne JSON dans MySQL db
- 13. Stocker dans un fichier en utilisant PHP
- 14. Comment stocker un total cumulatif dans un cookie (en utilisant javascript ou jquery)
- 15. comment trouver une chaîne dans une chaîne en utilisant php
- 16. Stocker la chaîne JSON statique dans une chaîne
- 17. Comment stocker un lien dans mysql en utilisant php?
- 18. mettre un cookie en php
- 19. Stocker une chaîne comme dans php
- 20. comment diriger vers une page HTML en utilisant un cookie?
- 21. Comment transformer une chaîne JSON dans un tableau PHP
- 22. comment faire json chaîne en utilisant php array?
- 23. Comment stocker une grande carte j2me
- 24. comment stocker une grande image par J2ME
- 25. sérialiser formulaire à json et stocker dans le cookie
- 26. Comment stocker un tableau d'objets dans un cookie avec jQuery $ .cookie()?
- 27. Erreur Firefox analyse JSON avec grande chaîne
- 28. Comment trouver une apostrophe dans une chaîne en utilisant PHP?
- 29. Comment stocker la chaîne json dans la table mysql
- 30. Comment stocker une grande source de données tout en utilisant jQuery aotocomplete dans le frontal?
Avez-vous lu http://php.net/manual/fr/features.cookies.php? – Jon
oui, j'ai lu ça. – Dev
Jetez un oeil à http://stackoverflow.com/questions/4225030/jquery-save-jeux-data-object-in-cookie – NAVEED