Rechercher : dans
Par :

[php] pb avec (un)serialize

Dernière réponse le 11 sep 2009 à 17:15:00 Nico, le 26 mai 2006 à 10:41:02 
 Signaler ce message aux modérateurs

Bonjour,
je réalise une petite application en php objet et rencontre une difficulté.
J'ai l'habitude d'utilisé les methodes serialize et unserialize afin de transformer mes objets pour les faire passer par des liens de pages en pages.
Héla dans cette exemple, cela ne veut pas marché et je ne parvient pas a trouver l'érreur....

code page 1:
/// Serialisation de l'objet pour pouvoir le passer dans le lien ///
$mon_detail=serialize($this);
<a onclick=window.open('modifier_planning.php?mon_detail=".$mon_detail."','','width=600,height=350,left=800,top=100');> Modifier </a>

code page 2:

<?php require("haut.php");
$mon_detail=unserialize($_GET["mon_detail"]);
echo $dede=$mon_detail->dede(); ?>

Le code a été simplifié,
$_Get nous permet bien d 'obtenir la chaine de caractere,
aucune erreur de signaler lors du unserialize, mais a la troisieme ligne, le prog ne reconnait pas l'objet....

Merci d'avance :)
(j'utilise php5 avec wamp serveur)

Meilleures réponses pour « [php] pb avec (un)serialize » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Introduction à PHP VoirQu'est-ce que PHP? PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

nico, le 26 mai 2006 à 10:52:27

Escusez moi j'ai oublié de préciser que si je fait le serialize/unserialize, sur la meme page, cela fonctionne parfaitement...
Merci

Répondre à nico

2

tom, le 19 jui 2006 à 17:38:22

Bonjour, j'aimerai savoir si tu as resolu ton probleme car j'ai le meme que le tien.
Merci

Répondre à tom

3

HD, le 29 déc 2006 à 22:39:40

Moi aussi j ai le même problème si quelqu'un a la solution
merci !!

Répondre à HD

4

toto, le 22 mai 2007 à 00:39:43

J'arrive un peu après la bataille...

Alors... Résolu ou pas ?

Répondre à toto

5

Aymeric, le 4 jui 2007 à 23:19:41

1- j'ai le tableau suivant (Print_r):
Array ( [signature] => un signature bidon bidon bidon [langue] => br ) 1

2- Que je serialize avec la fonction serialize(). le résultat est :
a:2:{s:9:"signature";s:30:"un signature bidon bidon bidon";s:6:"langue";s:2:"br";}

3- si je l'unserialize avec la fonction unserialize(). le résultat est bon :
Array ( [signature] => un signature bidon bidon bidon [langue] => br ) 1

4- Je constitue la requête suivante (avec addslashes()), que j'execute :
UPDATE `srr__parameter` SET `scp_params`='a:2:{s:9:\"signature\";s:30:\"un signature bidon bidon bidon\";s:6:\"langue\";s:2:\"br\";}', `scp_date`=CURRENT_TIMESTAMP, `scp_scr`='0.50' WHERE `scp_login` =2 AND `scp_sct` =3


5- Je constitue la requête suivante, que j'execute :
SELECT * FROM `srr__parameter` WHERE `scp_login`=2 AND `scp_sct`=3

6- la valeur du champ `scp_params` est la suivante (donc idem qu'en 2 ?) :
a:2:{s:9:"signature";s:30:"un signature bidon bidon bidon";s:6:"langue";s:2:"br";}

Execution d'un test à tout hasard : if($data['scp_params']==$TestSerialize)
Non, pas égal - c'est là qu'est le Bug... une histoire d'encodage des caractères ? JE SECHE !

7- erreur déclenchée lorsque je tente d'appliquer unserialize() à `scp_params` :
le code : 96 - $Params = unserialize($data['scp_params']);

Notice: unserialize() [function.unserialize]: Error at offset 5 of 122 bytes in /var/www/*****.php on line 96


Pour finir, j'utilise un serveur PHP sous Ubuntu

Important :

error_reporting(E_ALL);

j'ai du activer l'error reporting de niveau le plus important (E_ALL) afin de générer la E_NOTICE signalée plus haut. sinon, aucune erreur n'est montrée.

Répondre à Aymeric

6

smordac, le 15 nov 2007 à 14:03:53

Bonjour,

J'avais le meme type de probleme:
-1- Un object etait bien serialise() en page_1, et stocke sur une variable de $_SESSION['xxx']
-2- je recuperais bien cet object serialise en page_2, mais unserialize ne me le rendait pas (sans pour autant retourner FALSE)

Resolution
J'utilisais le meme nom pour la definition de class (registration), pour l'object instantie ($registration) et pour la variable de $_SESSION['registration']
J'ai change le nom de ma variable de $_SESSION et maintenant ca marche

Stephane

Répondre à smordac

7

tyak, le 12 déc 2007 à 07:16:14
  • +1

Bonjour,

J'ai le même problème mais c'est assez bizarre, je me demande si c'est pas un pb avec Wamp.

J'ai testé mon fichier avec Xamp, tout fonctionne nickel, j'ai copié ces derniers sous Wamp, et là, mes serialize fontionnent plus.

Est ce que ca pourrait venir de là ? car sous Xamp, aucun problème.

Répondre à tyak

8

Hooligan, le 30 jan 2008 à 18:03:23
  • +1

Salut ! J'ai eu le même problème après l'up sur FREE,
résolu aussi en changeant le nom de la variable de session.
Le pourquoi du comment maintenant ... Aucune idée.

Répondre à Hooligan

9

Ced, le 29 mar 2008 à 17:49:37
  • +8

Bonjour,

comme l'objet est envoyé en URL et qu'il contient des signes particuliers, il convient de l'encoder correctement :

$monObjetEnUrl = rawurlencode(serialize($monObjet));

Dans la page de réception de l'objet :

$monObjet = unserialize(rawurldecode($monObjetEnUrl));

Répondre à Ced

10

horror, le 29 mar 2008 à 17:54:01

Pliz all
how we link betwoon base de donnee annd php

Répondre à horror

11

 zen69, le 11 sep 2009 à 17:15:00

Bonjour à tous,

J'ai eu le même genre de problème et je l'ai résolu en modifiant une config dans le fichier php.ini :

magic_quotes_gpc = off

Bien à vous.

Répondre à zen69