Dans la programmation PHP, la fonction sérialisée est un outil très utile, en particulier lorsqu'il est nécessaire d'enregistrer des structures de données complexes telles que des tableaux ou des objets en fichiers, ou pour transférer ces données sur le réseau, il peut convertir les données en chaînes. Cet article introduira le rôle de la fonction de sérialisation et expliquera comment implémenter la sérialisation des données et la désérialisation à travers l'informatique, en particulier comment transmettre des données entre les pages via URL.
La fonction Serialize convertit une structure de données PHP (comme un tableau ou un objet) en une chaîne qui peut être facilement stockée ou transmise sur les demandes HTTP. Et lorsque vous devez restaurer cette structure de données à sa forme d'origine, vous pouvez utiliser la fonction non sérialisée .
grammaire:
string serialize ( mixed $value )
Paramètres: $ La valeur est la valeur que vous souhaitez sérialiser, qui peut être tout type de données, y compris les tableaux, les objets, etc.
Valeur de retour: renvoyez une chaîne représentant les données sérialisées.
Exemple:
$array = array('name' => 'Alice', 'age' => 25);
$serializedData = serialize($array);
echo $serializedData;
La chaîne de sortie peut ressembler:
a:2:{s:4:"name";s:5:"Alice";s:3:"age";i:25;}
La désérialisation consiste à restaurer la chaîne sérialisée à la structure de données PHP d'origine. Vous pouvez utiliser la fonction Unserialize pour implémenter cette fonction.
grammaire:
mixed unserialize ( string $data )
Paramètres: $ Data est une chaîne sérialisée.
Valeur de retour: renvoie les données d'origine, généralement un tableau ou un objet.
Exemple:
$serializedData = 'a:2:{s:4:"name";s:5:"Alice";s:3:"age";i:25;}';
$array = unserialize($serializedData);
print_r($array);
La sortie sera:
Array
(
[name] => Alice
[age] => 25
)
Si vous souhaitez transmettre des données d'une page à une autre via URL, vous pouvez utiliser la fonction Serialize pour convertir un tableau ou un objet en une chaîne, puis le passer par l'URL. Le récepteur peut restaurer les données à l'aide de la fonction non sérialisée .
Supposons que vous ayez un tableau PHP que vous souhaitez passer à une autre page:
// Définir un tableau
$data = array('name' => 'Alice', 'age' => 25);
// Sérialiser les tableaux
$serializedData = serialize($data);
// URL Données sérialisées codées
$encodedData = urlencode($serializedData);
// Transmettre les données URL Envoyer à une autre page
header('Location: receive.php?data=' . $encodedData);
exit;
Dans cet exemple, nous codant pour les données sérialisées à l'aide d'UrLencode afin qu'elle puisse être transmise en toute sécurité comme paramètre URL.
Dans la page du récepteur reçoile.php , vous pouvez obtenir les paramètres dans l'URL via $ _get et restaurer les données à l'aide de la fonction non sérialisée .
// Obtenir URL paramètre
if (isset($_GET['data'])) {
// Décoder et désérialiser les données
$serializedData = urldecode($_GET['data']);
$data = unserialize($serializedData);
// Données de sortie
echo 'Name: ' . $data['name'] . '<br>';
echo 'Age: ' . $data['age'] . '<br>';
} else {
echo 'No data received.';
}
Limite de longueur d'URL: Étant donné que la longueur de l'URL a une limite supérieure (généralement 2048 caractères), la limite peut être dépassée si les données passées sont importantes (par exemple, contenant une grande quantité de données de tableau ou d'objet). Envisagez d'utiliser des demandes de poste ou de stocker des données dans une session.
Sécurité: des soins spéciaux sont nécessaires lors de l'utilisation de non-série , en particulier lorsque les données désérialisées proviennent de sources non fiables, ce qui peut entraîner des vulnérabilités de sécurité (telles que les attaques d'injection d'objets). PHP 7 et ci-dessus introduit le paramètre ALLOGED_CLASSES , qui peut limiter les classes désérialisées pour améliorer la sécurité.
Grâce à des fonctions sérialisées et non désérialisées , PHP fournit un moyen simple et efficace de sérialiser et de désérialiser les données. Vous pouvez facilement transmettre des structures de données complexes entre les pages avec ces fonctions. Surtout lorsque vous devez passer des tableaux ou des objets sur les pages, Serialize est un outil très utile. Faites simplement attention aux limites de longueur et aux problèmes de sécurité de l'URL, il est très pratique de transmettre des données entre différentes pages.