je me rends compte que c'est pas super clair en utilisant la meme variable, alors la meme chose avec une petite modif :
<?php
$tab = array (1, 2, 3, 4, 5);
if (isset ($_POST['submit']) && $_POST['submit'] === 'yep') {
if (isset ($_POST['tab'])) {
$tabRecup = unserialize (base64_decode ($_POST['tab']));
if (is_array ($tabRecup)) {
print_r ($tabRecup);
}
}
}
?>
<form method="post" action="?">
<input type="hidden" name="tab" value="<?php echo base64_encode (serialize ($tab));?>" />
<input type="submit" name="submit" value="yep" />
</form>
Et des explications:
serialize () permet de transformer un tableau, un objet...et tout un
tas de choses en une chaine de caracteres. Justement, de maniere a
stocker cet objet (ca peut etre dans une base, un fichier, un post ou
un get justement, etc...). Cet "objet" gardera toutes ses proprietes.
base64_encode () est necessaire dans ce cas la, car il encode des
donnees (il est surtout utilise pour encoder des donnees binaires) de
maniere a les compresser d'une part, et a pouvoir les transbahuter
facilement. Ici, il est necessaire pour 2 raiosons :
- si ton tableau/objet est gros...ca va le reduire!
- serialize () utilise tout un tas de caracteres, dont des quotes
doubles et simples, ce qui pose probleme quand on le met dans la valeur
d'un input, evidemment. base64_encode n'utilise aucun quote.
|