impossible de deserialiser avec online.net, E_NOTICE comment l'utilisé

impossible de deserialiser avec online.net, E_NOTICE comment l'utilisé - PHP - Programmation

Marsh Posté le 27-09-2005 à 13:57:01    

je renvoie les valeurs via POST, j'ai donc sérialisé puis apres pour récuperer je désérialise. Tout fonctionne tres bien en local mais des que je fais fonctionner mon script sur mon hebergeur online.net, $data est vide, n'a aucune valeur.
 

Code :
  1. $data=unserialize($_POST['import']);


 
Je comprends pas trop pourtant, la fonction unserialize est supporté par online.net, j'ai verifié avec SDprod PHPinfo v2.0.
 
 
J'ai regardé sur php.net et j'ai vu que unserialize renvoyait false en cas d'erreur et malheuresement c'est le cas.
 

Code :
  1. if (unserialize($_POST['import']) == FALSE)
  2. echo "unserialize renvoie faulse";
  3. else
  4. echo "unserialize renvoie true";


 
 
De plus dans php.net, il est dit que l'on peux analyser l'erreur avec E_NOTICE

Citation :


sur FALSE est retourné dans les cas ou il y a une erreur et dans la délinéarisation de la valeur linéarisée FALSE. Le cas spécial peut être analysé en comparant str avec serialize(false) ou en attrapant l'erreur E_NOTICE émise
http://www.php.net/manual/fr/function.unserialize.php


 
Comment fait on pour utiliser E_NOTICE ?  
 car je n'ai aucun message d'erreur, je pense que cela pourra m'etre utile.

Reply

Marsh Posté le 27-09-2005 à 13:57:01   

Reply

Marsh Posté le 27-09-2005 à 14:03:56    

essaye de mettre au début de ton script :

Code :
  1. error_reporting(E_ALL);

Reply

Marsh Posté le 27-09-2005 à 14:18:31    

magnifique soju
 
j'obtiens maintenant  

Code :
  1. Notice: unserialize(): Error at offset 16 of 12814 bytes in importxmlbd.php on line 23


 
cela doit etre un caractère invalide que j'essaie de désérialisé. Je vais utilisé urlencode.

Reply

Marsh Posté le 27-09-2005 à 16:42:55    

arf, non j'arrive toujours pas deserialiser meme avec urlencode
 
 
j'envoie ce tableau par post

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [client] => jmk
  6.             [terrasse] => 0
  7.         )
  8.     [nbr] => 1
  9. )


 
ce qui qu'en le sérialisant, cela donne ceci :
 

Code :
  1. Array
  2. (
  3.     [import] => a:2:{i:0;a:2:{s:6:\"client\";s:3:\"jmk\";s:8:\"terrasse\";s:1:\"0\";}s:3:\"nbr\";i:1;}
  4. )


 
mais voila, j'ai toujours ce message d'erreur :
 

Code :
  1. Notice: unserialize(): Error at offset 14 of 86 bytes in importxmlbd.php on line 27


 
Je ne vois pas du tout pourquoi cela bloque. J'ai utilisé urlencode et urldecode, mais la on peux voire qu'il n'y a pas de % + un code car il n'y a pas de retour charriot, pas de ', et meme pas d'espace .....
 
Que cela signifie t-il ?
 
Je ne comprends pas car comme je l'ai dit, SDprod PHPinfo v2.0 m'indique que la fonction est activée.

Reply

Marsh Posté le 27-09-2005 à 17:51:48    

comme vous pouvez le voire, j'ai bien la fonction activé :


Message édité par weed le 05-10-2005 à 12:09:14
Reply

Marsh Posté le 27-09-2005 à 18:07:51    

weed a écrit :


Code :
  1. Array
  2. (
  3.     [import] => a:2:{i:0;a:2:{s:6:\\"client\\";s:3:\\"jmk\\";s:8:\\"terrasse\\";s:1:\\"0\\";}s:3:\\"nbr\\";i:1;}
  4. )




cela signifie que tu as magic_quote_gpc désactivé, et que tu ne fais pas de stripslashes() sur les données postées ..
prenons ce morceau du tableau sérializé
s:6:\"client\";
il indique que ci suit ( après s:6: ) une string d'une longueur de 6 caractères,
or combien en comptes-tu ?
et quels sont les intrus ?
 
donc rtfm pour plus d'info :)
php.net/get_magic_quotes_gpc
php.net/stripslashes


Message édité par shakpana le 27-09-2005 à 18:09:42
Reply

Marsh Posté le 27-09-2005 à 18:35:25    

super merci, je ne voyais pas du tout à quoi correspondait les chiffres, merci de m'avoir expliquer.  
 
moi lol, si j'aurais trouvé, j'aurais fais un stripslashe direct mais en effet c'est bien plus propre comme solution.
 
 
merci encore

Reply

Marsh Posté le 27-09-2005 à 18:48:01    

weed a écrit :

arf, non j'arrive toujours pas deserialiser meme avec urlencode


j'ajouterais un ptit truc : urlencode, c'est pour encoder quelque chose qui va servir d'url ou qui sera mit dans une url, donc ça ne s'appliquait pas à ton problème, le contenu d'un formulaire est encodé par l'agent utilisateur, en genre x-www-form-encoded, à partir du moment ou tu lui balances des données correctement HTMLisées :)

Reply

Marsh Posté le 27-09-2005 à 18:48:13    

je viens de voire que magic_quotes_gpc est justement activé :
http://www.online.net/support/fr/doc/php4/phpinfo.html
 
en fin de compte avant envoi :

Code :
  1. serialiser :a:2:{i:0;a:2:{s:6:"client";s:3:"jmk";s:8:"terrasse";s:1:"0";}s:3:"nbr";i:1;}


 
et à la reception

Code :
  1. Array
  2. (
  3.     [import] => a:2:{i:0;a:2:{s:6:\"client\";s:3:\"jmk\";s:8:\"terrasse\";s:1:\"0\";}s:3:\"nbr\";i:1;}
  4. )


 
cela quote automatiquement, si le magic quote n'etait pas activé, je n'aurais pas eu ce genre de souci ...
 

Code :
  1. if (!get_magic_quotes_gpc())
  2. {
  3.      $data=stripslashes($_POST['import']);
  4. }

Message cité 1 fois
Message édité par weed le 27-09-2005 à 18:49:14
Reply

Marsh Posté le 27-09-2005 à 18:54:39    

weed a écrit :

cela quote automatiquement, si le magic quote n'etait pas activé, je n'aurais pas eu ce genre de souci ...
 

Code :
  1. if (!get_magic_quotes_gpc())
  2. {
  3.      $data=stripslashes($_POST['import']);
  4. }



presque pas ... ton bout de code veut dire :
-> si magic_quote désactivé, enlever les quote
i.e. qd magic_quote esr activé, les slashes sont automatiquement enlevés.
ce qui est correct


Message édité par shakpana le 27-09-2005 à 18:55:43
Reply

Marsh Posté le 27-09-2005 à 18:54:39   

Reply

Marsh Posté le 27-09-2005 à 20:33:50    

yep, je m'en suis rendu compte, c'est l'inverse qu'il faut ecrire  :ange:  
 

Code :
  1. if (get_magic_quotes_gpc()) 
  2. {
  3.      $data=stripslashes($_POST['import']);
  4. }

Reply

Marsh Posté le 27-09-2005 à 20:42:32    

Code :
  1. if (get_magic_quotes_gpc()) 
  2. {
  3.      $data=stripslashes($_POST['import']);
  4. }


nan, tu avais la bonne syntaxe ... c'est moi qui t'ai embrouillé avec mon explication à 0,2e  :jap:  
 
get_magic_quotes_gpc() retourne
- VRAI si magic_quotes_gpc est activé
- FAUX si magic_quotes_gpc n'est pas activé
 
donc on veux enlever les slashes _si_ get_magic_quote_gpc ne retourne pas VRAI
d'ou le if (!get_magic_quotes_gpc())
 
plus clair ?


Message édité par shakpana le 27-09-2005 à 20:43:52
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed