unzerialize bug

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : unzerialize bug

Re: unzerialize bug

par sirakawa » 05 août 2011, 20:43

Pourquoi ne pas vérifier BÊTEMENT ce que contient effectivement la fameuse variable?
foreach($result as $adresse)
{
    $longueur = strlen($adresse);
    print " <br>longueur $longueur adresse ==>$adresse<=="; // les ==><== sont importants pour bien voir la chaîne exacte... 
                                                                                                   //la longueur     permet de voir s'il ne traîne pas des caracyères supplémentaires..
$list_adress = unserialize($adresse['datavalue']);
}
echo $list_adress;
Une autre approche serait de consulter la bdd en-dehors de php... histoire de voir (accents, apostrophes....)

Re: unzerialize bug

par xTG » 05 août 2011, 11:13

Avec le même code que moi? Parce que du coup je suis encore plus pomé xD...
Comment pourrais-je avoir la même base de données que toi ? 8-|

Avec ce code :
$str = 'a:3:{i:0;s:12:"34 rue pouet";i:1;s:12:"45 rue prout";i:2;s:15:"78avenue machin";}';
var_dump(unserialize($str));
Tu as soit des caractères non imprimables qui se sont glissés lors de l'import en base de données, soit lors de l'extraction.

Re: unzerialize bug

par Invité » 05 août 2011, 10:54

Avec le même code que moi? Parce que du coup je suis encore plus pomé xD...

Re: unzerialize bug

par xTG » 05 août 2011, 10:47

Si je prend la chaîne telle que tu nous la présentes j'obtiens bien :
array(3) { [0]=> string(12) "34 rue pouet" [1]=> string(12) "45 rue prout" [2]=> string(15) "78avenue machin" }
Donc tu dois avoir des caractères supplémentaires qui trainent.

unzerialize bug

par Invité » 05 août 2011, 10:37

Bonjour à tous,

Je rencontre quelque problème en utilisant la fonction unsérialize

Je cherche à l'utiliser sur un champs de ma bdd qui contient des adresses sous forme sérializé. Voici la ligne stocké en bdd dans la colonne datavalue
a:3:{i:0;s:12:"34 rue pouet";i:1;s:12:"45 rue prout";i:2;s:15:"78avenue machin";}

Dans mon php je fais
$list_adress;
$result = $this->facturemodel->get_companyadress($_POST['id_groupe']);
foreach($result as $adresse)
{
$list_adress = unserialize($adresse['datavalue']);
}
echo $list_adress;
J'obtient un erreur sur le unserialize : Error at offset 27 of 94 bytes

Sur internet j'ai vu que cela pouvais venir d'une mauvaise serialization de mon tableau (corruption de la chaine qui serait mal écrite en gros mais je ne trouve pas l'erreur)

Quelqu'un aurait une idée?Merci d'avance