PHPプログラミングでは、シリアル化機能は非常に便利なツールです。特に、配列やオブジェクトなどの複雑なデータ構造をファイルに保存したり、ネットワーク上にこのデータを転送したりする必要がある場合、データを文字列に変換できます。この記事では、 Serialize関数の役割を紹介し、それを介してデータのシリアル化と敏aserializationを実装する方法、特にURLを介してページ全体にデータを渡す方法を説明します。
Serialize関数は、PHPデータ構造(配列やオブジェクトなど)を、HTTPリクエストに簡単に保存または渡すことができる文字列に変換します。また、このデータ構造を元のフォームに復元する必要がある場合は、 Unserialize機能を使用できます。
文法:
string serialize ( mixed $value )
パラメーター: $値は、シリアル化する値であり、配列、オブジェクトなどを含むあらゆるタイプのデータである可能性があります。
返品値:シリアル化されたデータを表す文字列を返します。
例:
$array = array('name' => 'Alice', 'age' => 25);
$serializedData = serialize($array);
echo $serializedData;
出力文字列は次のようになります。
a:2:{s:4:"name";s:5:"Alice";s:3:"age";i:25;}
脱isizeは、シリアル化された文字列を元のPHPデータ構造に復元することです。 Unserialize機能を使用して、この関数を実装できます。
文法:
mixed unserialize ( string $data )
パラメーター: $データはシリアル化された文字列です。
返品値:通常は配列またはオブジェクトである元のデータを返します。
例:
$serializedData = 'a:2:{s:4:"name";s:5:"Alice";s:3:"age";i:25;}';
$array = unserialize($serializedData);
print_r($array);
出力は次のとおりです。
Array
(
[name] => Alice
[age] => 25
)
URLを介してあるページから別のページにデータを渡す場合は、 Serialize関数を使用して、配列またはオブジェクトを文字列に変換してからURLに渡すことができます。受信者は、 Unserialize機能を使用してデータを復元できます。
別のページに渡すPHPアレイがあるとします。
// 配列を定義します
$data = array('name' => 'Alice', 'age' => 25);
// シリアル化配列
$serializedData = serialize($data);
// URL エンコードされたシリアル化データ
$encodedData = urlencode($serializedData);
// データを渡します URL 別のページに送信します
header('Location: receive.php?data=' . $encodedData);
exit;
この例では、 URLENCODEを使用してシリアル化データをエンコードして、URLパラメーターとして安全に渡すことができます。
Receiver Page receive.phpでは、 $ _getを介してURL内のパラメーターを取得し、 Unserialize機能を使用してデータを復元できます。
// 得る URL パラメーター
if (isset($_GET['data'])) {
// データをデコードして脱出します
$serializedData = urldecode($_GET['data']);
$data = unserialize($serializedData);
// 出力データ
echo 'Name: ' . $data['name'] . '<br>';
echo 'Age: ' . $data['age'] . '<br>';
} else {
echo 'No data received.';
}
URLの長さの制限: URLの長さの上限(通常は2048文字)があるため、渡されたデータが大きい場合(たとえば、大量の配列またはオブジェクトデータが含まれている場合)、制限を超えることがあります。セッションに投稿リクエストを使用するか、データを保存することを検討してください。
セキュリティ:特に、セキュリティの脆弱性(オブジェクトインジェクション攻撃など)につながる可能性のある信頼されていないソースからの脱必要なデータが提供される場合は、特に選択されていない場合は特別な注意が必要です。 PHP 7以降は、 Aloct_Classesパラメーターを導入します。これにより、セキュリティを改善するために脱色クラスを制限できます。
機能化および非正規化関数を通じて、PHPはデータをシリアル化し、データをシリアル化して脱必要にする方法を提供します。これらの機能を使用して、ページ間で複雑なデータ構造を簡単に渡すことができます。特に、ページに配列またはオブジェクトを渡す必要がある場合、 Serializeは非常に便利なツールです。 URLの長さの制限とセキュリティの問題に注意してください。異なるページ間でデータを渡すことは非常に便利です。