Un petit exemple pour le mettre en évidence :
Le souci ici est que l'encodage en base64 parfois comporte des symboles qui ne plaisent pas tellement aux passage par les variables $_GET et/ou $_POST.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <?php if(!isset($_GET['sA'])){ echo 'encode...<br />'; $a = '>'; echo 'a = [ '.$a.' ]<br />'; $b = serialize($a); echo 'b = [ '.$b.' ]<br />'; $sA = base64_encode($b); echo 'sA = [ '.$sA.' ]<br />'; echo '<a href="test2.php?sA='.$sA.'">sA</a>'; }else{ echo 'decode...<br />'; $sA = $_GET['sA']; echo 'sA = [ '.$sA.' ]<br />'; $b = base64_decode($sA); echo 'b = [ '.$b.' ]<br />'; $a = unserialize($b); echo 'a = [ '.$a.' ]<br />'; echo 'encode...<br />'; $a.=$a; echo 'a = [ '.$a.' ]<br />'; $b = serialize($a); echo 'b = [ '.$b.' ]<br />'; $sA = base64_encode($b); echo 'sA = [ '.$sA.' ]<br />'; echo '<a href="test2.php?sA='.$sA.'">sA</a>'; } ?>
Dans ce cas, > est sérialisé en s:1:">"; qui est encodé en czoxOiI+Ijs=.
Or, il y a un "+" dans cet encodage, et ça fout la merde.
Qu'utilisez-vous pour sérialiser vos objets proprement ?
Partager