Un petit exemple pour le mettre en évidence :
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>';
}
?>
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.

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 ?