J'utilise les fonctions serialize/unserialize dans php 5.2. le texte à stocker est POSTé via un formulaire. btw, pas de blanc avant ou après. si le texte contient "ou" il sérialise avec succès. Le problème est qu'il neproblème de désérialisation dans php
Répondre
unserialize pas. ce que je fais mal? Quand vous sérialiser, vous devez utiliser addslashes
et quand vous unserialize, utilisez stripslashes
fonction .
Exemple:.
if (get_magic_quotes_gpc())
{
serialize($variable);
}
else
{
addslashes(serialize($variable));
}
if (get_magic_quotes_gpc())
{
stripslashes(unserialize($variable));
}
else
{
unserialize($variable);
}
il n'a pas sérialisé du tout – opteronn
@Web qui vous a dit que? –
@Kurt: Vous pourriez avoir des citations magiques allumé, voir ma réponse mise à jour.Egalement quelle erreur obtenez-vous s'il y en a? –
est probablement les guillemets magiques en réponse à un tel comportement Ainsi, pour unseria Lize vous pourriez avoir à faire un stripslashes() d'abord:
if (get_magic_quotes_gpc()) $data = stripslashes($data);
bien qu'il est presque impossible d'avoir magic_quotes sur un système 5.2 ...
dire quelque chose certaine, vous devez trouver une différence entre la formation initiale et renvoyé des données.
Mais de toute façon, pourquoi n'utilisez-vous pas des sessions au lieu d'envoyer des données au navigateur et de retour? Des sessions en effet plus rapides et sécurisées. Ajouter des barres obliques aux guillemets résout le problème.
Je suis désolé j'ai oublié de dire que le texte à sérialiser est ARRAY_ASSOCIATIVE (probablement) à cause de cette fonction STRIPSLASHES ne fonctionne pas – opteronn
Toutes les données sont stockées dans des fichiers au format sérialisé SESSIONS ne le coupe pas – opteronn
Je suis désolé @Kurt, mais stripslashes n'a pas HING à faire avec des tableaux. Cela fonctionne avec des chaînes. Et ça fonctionne toujours. Quoi qu'il en soit, les citations magiques sont une supposition, et pour vous dire quelque chose de certain, vous devez trouver une différence entre les données initiales et retournées. Ou au moins apporter les deux cordes ici –
Jetez un oeil à mon code: http://codepad.org/7JWa2BT6
Mauvais commentaire. J'avais échappé aux variables avant de former le tableau d'où l'ajout de barres obliques travaillées. La chaîne sérialisée doit être échappée. pas l'inverse –
David Walsh a une solution simple:
//to safely serialize
$encoded_serialized_string = base64_encode(serialize($your_array));
//to unserialize
$array_restored = unserialize(base64_decode($encoded_serialized_string));
Ça marche! Mais j'aimerais savoir si cela sera corrigé sur une version ultérieure de PHP et quelles sont les origines de ce problème. –
Ce n'est pas un bug avec PHP. Comme les réponses ultérieures le suggèrent, vous devez utiliser addslashes pour vous assurer que vos citations sont échappées. La solution de David Walsh fonctionne car elle convertit tout en une chaîne base64 ne contenant pas de guillemets. J'ai personnellement utilisé cette méthode lorsque j'avais besoin de conserver des objets stdClass dans des fichiers plats lors du développement sur un système sans que les guillemets magiques ne soient activés et déployés sur un serveur. – Eclectic
- 1. Problème de désérialisation WCF
- 2. Problème de désérialisation XML
- 3. problème Désérialisation avec DataContractJsonSerializer
- 4. C# problème Désérialisation
- 5. Problème de désérialisation du GSON
- 6. C# problème XML désérialisation
- 7. problème en C# Xml désérialisation
- 8. problème désérialisation JSON avec JSON.NET
- 9. La désérialisation cPickle de Python de PHP?
- 10. Problème de sérialisation/désérialisation de Silverlight
- 11. Problème de désérialisation du fichier XML
- 12. Problème de désérialisation avec le dictionnaire
- 13. C# Problème de désérialisation dans la nouvelle structure de classe
- 14. problème de blocage désérialisation XML pour objet problème
- 15. Désérialisation de MySQL dans un tableau PHP multidimensionnel
- 16. problème avec désérialisation JSON sur DataMember « __type »
- 17. Problème avec la désérialisation XML C#
- 18. Problème de désérialisation XML (attribut avec un espace de noms)
- 19. Problème lors de la sérialisation et de la désérialisation ArrayList
- 20. Problème de désérialisation des listes génériques avec C# XmlSerializer
- 21. WCF DataContract problème de désérialisation avec des valeurs vides
- 22. Erreur de désérialisation dans un nouvel environnement
- 23. C# désérialisation
- 24. Désérialisation XML dans VB/VBA
- 25. Question de désérialisation JSON
- 26. Erreur de désérialisation WCF
- 27. Django Désérialisation
- 28. Sérialisation et désérialisation de tableaux vides dans le dictionnaire/objet
- 29. Performance de désérialisation XML dans ASP.NET MVC
- 30. Échec de la désérialisation - C#
Pourquoi êtes-vous ding cela? Pourquoi ne pas utiliser des sessions ou autres? - Envoyer des données et les recevoir via POST signifie que l'utilisateur peut les modifier et doit transférer plus de données dans les deux sens. – johannes
Toutes les données sont stockées dans des fichiers au format sérialisé. SESSIONS ne le coupe pas. – opteronn
Eh bien, laissez-moi comprendre. Vous recevez des données du formulaire POST, puis sérialiser $ _POST tableau et écrire la chaîne résultante dans un fichier? Et puis vous le relisez, les données ne se désérialisent pas. Droite? –