2010-11-05 19 views
0

J'utilise des formulaires cachés pour passer des variables entre les pages (en utilisant POST). Cela fonctionne bien pour les variables scalaires; cependant, quand j'essaie d'utiliser des tableaux que j'ai supposément passés, il semble que la valeur que je reçois est "Array".PHP: Passez un tableau multidimensionnel entre les pages? Serialize/unserialize ne fonctionne pas

J'ai cherché sur Internet à la recherche d'une solution, et this semblait prometteur, mais je ne sais pas si c'est faisable étant donné que mes tableaux contiennent d'autres tableaux.

Ensuite, j'ai vu the serialize function et espéré que cela pourrait fonctionner, mais ça ne fonctionne pas. J'ai essayé this fix mais cela ne fonctionne toujours pas. Voici mon code sur la page de formulaire:

$sendInfo = base64_encode(serialize($info)); 
echo '<input type="hidden" name="info" id="info" value="'.$sendInfo.'"/>'; 

ensuite sur la page de traitement:

$info = unserialize(base64_decode($_POST['info'])); 

Quelqu'un peut-il savoir pourquoi cela ne fonctionne pas? Y at-il un correctif, ou avez-vous une autre recommandation pour passer le tableau?

+1

Je pense que nous avons besoin d'un peu plus d'informations sur la façon dont il est « ne fonctionne pas » – Phil

Répondre

3

Je recommande d'utiliser des sessions. Il est facile

Page 1:

session_start(); //at the top of each page 
$_SESSION['info'] = $info; 

Page 2:

session_start(); //at the top of each page 
    print_r($_SESSION['info']); 

si cela fonctionne pas pour vous en raison d'une raison étrange, au lieu d'utiliser serialise, l'utilisation json_encode et json_decode .

Page 1:

$sendInfo = base64_encode(json_encode($info)); 
echo '<input type="hidden" name="info" id="info" value="'.$sendInfo.'"/>'; 

Page 2:

$ info = (tableau) json_decode (base64_decode ($ _ POST [ 'info'])); var_dump ($ info);

Vous trouverez peut-être que certaines informations sont devenues des objets. JSON ne prend pas en charge les tableaux associatifs (ceux dont les mots sont une clé) et les transforme donc en objets. Je l'ai casté à un tableau mais cela ne le classera qu'au niveau supérieur. Si vous voulez typer récursivement, utilisez "object2array". Voir mon premier résultat googlé:

http://www.jonasjohn.de/snippets/php/array2object.htm

1

Je ne peux pas aider sans plus d'informations par je peux recommander en utilisant sessions. Cela rendra les choses beaucoup plus faciles.