Utiliser unserialize en PHP avec une donnée utilisateur n'est pas "interdit", il faut juste avoir conscience qu'en faisait unserialize($_GET['machin']) alors $_GET['machin'] peut contenir absolument n'importe quoi et quand je dis "absolument n'importe quoi", ça veut dire absolument n'importe quoi. L'utilisateur peut y mettre "£$£¤^¨ùsdklj8èdqsd#", il peut y mettre des nombres, des arrays à 40 niveaux, des objets de n'importe quel type (type SOAP, type Iterator), il peut y mettre du binaire, des caractères nulls, il peut y mettre des éléphants, du café, donc attention aux court-circuits !
Il faut donc vérifier les types de tout ce que tu veux :
Il faut donc vérifier les types de tout ce que tu veux :
Code :
if(strpos($_GET['machin'], "O:") === false)
{
$data = unserialize($_GET['machin']);
if(is_array($data))
{
// $data est bien un array
if(isset($data['truc']))
{
if(is_string($data['truc']))
{
echo "Ce truc doit être un string !";
}
else
{
echo "Pas de string ? Ben tu sors.";
}
}
else
{
echo "Vous avez oublié truc";
}
}
else
{
echo "Le carton dans la poubelle jaune, le reste dans la poubelle verte, et dans "machin", uniquement des array !";
}
}
else
{
echo "Ah non pas d'objet.";
}