Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1817 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Pb de serialisation ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Pb de serialisation ...

n°316740
SCREAM78
Posté le 24-02-2003 à 18:13:57  profilanswer
 

Bonjour,
 
Je souhaite sérialiser un tableau multidimentionnel et ca ne fonctionne pas.
Voici ce que j'utilise :
 

Code :
  1. $temp=htmlspecialchars(serialize($user));
  2. echo "<INPUT TYPE='HIDDEN' NAME='user' VALUE='$temp'>";


 
...
 

Code :
  1. $user=unserialize(stripslashes($user));
  2. while (list($key,$val)=each($user))
  3. {
  4. ...
  5. }


 
Il me dit : "variable passed to each() is not an array or object"
 
J'ai testé avec un tableau associatif et ca passe nickel (en utilisant la meme chose).
 
Merci d'avance ;)


Message édité par SCREAM78 le 24-02-2003 à 18:14:38
mood
Publicité
Posté le 24-02-2003 à 18:13:57  profilanswer
 

n°316825
ethernal
Chercheur de vérité...
Posté le 24-02-2003 à 19:37:18  profilanswer
 

si tu recopies le while de ta seconde page dans ta première page pour tester ton tableau, ton code fonctionne t'il ?

Code :
  1. $temp=htmlspecialchars(serialize($user));
  2. echo "<INPUT TYPE='HIDDEN' NAME='user' VALUE='$temp'>";
  3. while (list($key,$val)=each($user))
  4. ...
  5. }


 
ceci dit, passer les valeurs du user dans un form n'est pas une très bonne idée, mais ça dépend de ce que tu veux faire...


Message édité par ethernal le 24-02-2003 à 19:37:59

---------------
...oups kernel error...
n°316828
SCREAM78
Posté le 24-02-2003 à 19:41:27  profilanswer
 

Oui il fonctionne correctement. Il m'affiche tout ce qu'il faut ... c'est à n'y rien comprendre ... pourtant dans la doc php de la fonction serialize() ils disent que ca marche avec un tableau multidimentionnel ...
Mon tableau user a pour clé le nom de l'utilisateur et pour chaque utilisateur il y a le profil, le password etc ...
J'utilise un tableau de tableau ...  

n°316836
ethernal
Chercheur de vérité...
Posté le 24-02-2003 à 19:50:45  profilanswer
 

oui oui...
ton problème vient du fait que tu fais un htmlspecialchars.
tu dois appliquer la fonction inverse évidemment de l'autre côté !


---------------
...oups kernel error...
n°316854
SCREAM78
Posté le 24-02-2003 à 20:31:20  profilanswer
 

Euh ... la je suis chez moi et pas au taff mais non il me semble pas ... je croyais que c'était stripslashes qui faisait ca ... c quoi la fonction inverse ?
Merci pour ton aide ;)

n°316860
ethernal
Chercheur de vérité...
Posté le 24-02-2003 à 20:37:59  profilanswer
 

je l'ai pas sous la main, mais va voir sur php.net la fonction htmlspecialchars(),  dans les commentaires des utilisateurs je pense qu'il y en a un qui l'a fait.
 
sinon, si j'étais toi, je passerais à un mode session pour stocker ce tableau. Modifier des données même sérializées est tout à fait possible sans trop de problème.
 
stripslasches <> addslashes ;)


Message édité par ethernal le 24-02-2003 à 20:38:42

---------------
...oups kernel error...
n°316927
SCREAM78
Posté le 24-02-2003 à 22:13:16  profilanswer
 

Oui je pense que je vais regarder de plus pret ces sessions ;) merci pour ton aide :)

n°317302
SCREAM78
Posté le 25-02-2003 à 12:10:46  profilanswer
 

Je suis passé par les sessions et ca marche beaucoup mieux.
J'ai juste un petit souci avec les frames :
Je m'explique ... j'ai divisé l'ecran en 3 parties : frame gauche haut, frame gauche droite, frame droite.
Dans la frame gauche haut je vais lire un fichier de conf, créer un tableau et enregistrer ce tableau dans la session ainsi que d'autres infos (je le fais une fois évidemment, uniquement si seesion_is_register renvoie false). L'utilisateur choisit dans un menu une action a effectuer, un formulaire est alors passé a right.php (frame de droite). Le pb est que dans la frame de droite j'ai pas les infos tant que j'ai pas fait un refresh global (sous mozilla et IE du moins ... sous Netscape ca marche ... va comprendre comment il fait). Je sais pas si je suis super clair ??

n°317481
ethernal
Chercheur de vérité...
Posté le 25-02-2003 à 15:28:09  profilanswer
 

met le code des sessions dans la page principale (celle qui crée les frames), tu auras plus de chance que ce soit la première chargée.  En effet, rien ne garanti que la frame de droite se charge avant celle de gauche... si c'est bien ça le problème (?)
 
ps : les frames c'est pas terrible non plus :(, tu vas rien gagner, sauf des problèmes...


---------------
...oups kernel error...
n°317551
SCREAM78
Posté le 25-02-2003 à 16:16:57  profilanswer
 

Oui oui tu avais bien pigé le pb ...
J'ai mit tout le code de session dans la page qui charge les frame et ca va bcp mieux ;) j'y avais pas pensé ... je suis une vrai merde (loule).
Pour les frame j'ai pas le choix ... c'est ce que veut le chef ... il est vrai que ca apporte des emmerde mais bon ...

mood
Publicité
Posté le 25-02-2003 à 16:16:57  profilanswer
 

n°317621
ethernal
Chercheur de vérité...
Posté le 25-02-2003 à 17:06:19  profilanswer
 

j'étais pas sûr d'avoir mis le doigt sur le problème ;)
 
 
explique lui qu'avec les pseudos frames php tu as les même avantages qu'avec les frames html :
- facilité de modification et de maintenance par la séparation du code
- en frame php, tu as moins de code (pas de <html></html> à chaque fois, juste un tableau) d'où une économie de la bande passante...
 
sans ses inconvénients :
- problèmes de sécurité (imagine que le client ne charge que la page de droite -> pas de session -> problème, je ne dis pas que c'est le cas sur ton site, mais il faut y penser)
- d'où une complexification du code et une charge de travail du serveur inutile pour faire des choses simples (pour gérer ce que je dis au dessus), contrairement au frames php.
- gestion des tailles d'écran souvent pénible (souvent en 800x600 tu ne vois plus rien). En frame-php tu n'auras jamais des assenceurs droite gauche si le gars à du 800x600...
 
a+


Message édité par ethernal le 25-02-2003 à 17:07:17

---------------
...oups kernel error...
n°317631
SCREAM78
Posté le 25-02-2003 à 17:16:56  profilanswer
 

Merci beaucoup ... j'apprend des choses ;) ... je vais regarder de ce coté la si ca peut me simplifier la vie :D.
En tout cas un grand merci pour ton aide ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Pb de serialisation ...

 

Sujets relatifs
Pb de variables entre ActionScript et PHP[PHP] Erreur sur compteur de téléchargement
[PHP] Tronquer un fichier SQL[PHP] Pb avec - setlocale -
[PHP] récupérer l'adresse de la page actuellePHP + oracle8
PHP GD, melanger 2 IMAGES, un PNG semi transparent et un PNG "normal"[ PHP ] comment enlever les doublons d'une var en tableau ( Array )
PHP avec de l' IRC dedans :)[Php] Fonction qui retourne une date X jours avant la date courante
Plus de sujets relatifs à : [PHP] Pb de serialisation ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR