ホームページ  >  記事  >  バックエンド開発  >  PHPの初期化解除

PHPの初期化解除

WBOY
WBOYオリジナル
2024-08-29 12:51:251068ブラウズ

PHP のアンシリアル化は、シリアル化されたデータを実際のユーザー入力データに変換するために使用できる関数の 1 つです。これはシリアライズ関数の逆のプロセスであり、主に配列、マッピングコレクションに焦点を当てます。各要素の配列インデックスを計算します。大きなサイズまたはその他の複雑なデータ構造です。データの操作にデフォルトのメソッドを使用し、アンシリアライズ()も行います。ユーザー入力がシリアル化解除できない場合、メソッドはブール値を返すため、出力コンソールには false が返されます。オブジェクトはシリアル化解除関数用に個別に作成されます。

広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文:

PHP には、より洗練された Web ベースのアプリケーションを作成するための変数、キーワード、関数に関する独自の構文があります。一般に、PHP シリアル化形式は、serialize() 関数のように十分に文書化されていません。シリアル化された整数、浮動小数点数、ブール値、文字列、配列をサポートします。オブジェクトと、アンシリアル化実装でサポートするための他の参照が含まれています。

<?php
$input= array('','');
$var = serialize($input);
$var1 = unserialize($var);
---some php codes based on the user needs---
?>

上記のコードは、PHP で Serialize() 関数と unserialize() 関数を使用するための基本的な構文です。すべてのデータ型とその他のデフォルト関数をサポートします。

PHP で関数の動作をシリアル化解除するにはどうすればよいですか?

アンシリアライズ関数はシリアライズ関数に依存します。データがどのような関数で呼び出され、使用されるとしても、データはキーを使用して完全にシリアル化されます。データにアクセスしたい場合は、コード内でデータを逆シリアル化するか、データを逆シリアル化する必要があります。その後、私たちだけがデータにアクセスしました。ファイルの概念にも使用されます。これらのserialize関数とunserialize()関数を使用すると、常に、アンシリアライズ中のオブジェクトを保護し、より保護するためのブール条件が返されます。あるいは、それを信頼できないデータと呼ぶこともできます。したがって、他のマルウェアやマシンの外部からのウイルスも回避されます。また、コードインジェクションによって保護されており、データベースエンドでも、信頼できないマルウェアサイトに対する一部の SQL インジェクション攻撃を回避します。

通常、unserialize() 関数は 2 つのパラメーター、str と options を受け取ります。 str は、逆シリアル化されるのを待つシリアル化された文字列を含むパラメータの 1 つであり、options は、有効なユーザー、特に allowed_classes などの組み込みクラスに対してのみ受け入れられる特定の関数の動作を制御するために含まれる配列の 1 つです。指定されたクラス名、特に _wakeup() や _destruct() などの一部のメソッドのみを受け入れます。これらのメソッドはシリアル化されたオブジェクトを使用して実装されています。このメソッドを使用すると、特定のオブジェクトで unserialize() 関数が呼び出されたときに自動的に実行されます。

PHP アンシリアライズの例

以下は PHP アンシリアライズの例です:

例 #1

コード:

<?php
$inputs = serialize(array('Siva', 'Raman', 'Sivaraman', 'wdigb', 'dwiugv', '87dhg', 'wdhgv', 'edhgfv', 'hfe', 'wgieufv', 'ehoije', 'iwuoegf', 'wuieguv','jdgv', 'wqgdjf', 'khwdjgh','jdhfdkswi', 'uqiwuke', 'iqweyf', 'oiuqiwleyugu' ));
echo  $inputs . '<br>';
$vars = unserialize($inputs);
var_dump ($vars);
echo $vars;
?>

出力:

PHPの初期化解除

上記の例では、同じコード内で Serialize 関数と unserialize() 関数を使用しました。ユーザーがアプリケーションに入力を与えると、アプリケーションはそれを別の変数に保存します。これはシリアル化された変数であり、echo ステートメントを使用してコンソールに出力することもできます。 unserialize() 関数を使用してデータをシリアル化解除する必要があります。データは別の変数に保存され、同じ echo ステートメントを使用して出力されます。結果をコンソールに出力したい場合は、print、echo などの他のデフォルトのメソッドを使用します。これらは、PHP スクリプトで使用されるいくつかのメソッドです。

例 #2

コード:

<?php
class demo {
public $vars;
}
class demo1 {
public $vars1;
}
class demo2 extends demo {
public $vars2, $vars3;
}
class demo3 extends demo2{
public $vars4;
}
class demo4 extends demo3 {
public $vars5;
}
class demo5 extends demo4 {
public $vars6;
}
class demo6 extends demo5{
public $vars7;
}
class demo7 extends demo6 {
public $vars8,$vars9, $vars10;
}
$c1 = new demo();
$c1->vars = 1234;
$c3 = new demo2();
$c3->vars2 = "Siva";
$c2 = new demo1();
$c2->vars1 = 2756876;
$d1 = serialize($c1);
$d2 = serialize($c2);
$d5 = serialize($c3);
$d3 = unserialize($d1, ["allowed_classes" => true]);
$d6 = unserialize($d5, ["allowed_classes" => true]);
$d4 = unserialize($d2, ["allowed_classes" => ["demo", "demo1"]]);
$d7 = unserialize($d5, ["allowed_classes" => ["demo", "demo1", "demo2"]]);
echo "Welcome To My Domain is: " . $d3->vars, $d6 ->vars2;
echo "<br />";
echo "Result of demo1 d3 memeber is: " . $d4->vars1;
echo "<br/>";
echo "Result of demo2 d7 memeber is: " . $d7->vars2;
?>

出力:

PHPの初期化解除

2 番目の例では、同じシリアル化とアンシリアル化の概念を使用しました。それでも、ここではいくつかのクラスを使用しました。さらに、各クラスの親子関係には、クラス外で同じ変数を利用するためのパブリック アクセス修飾子を備えた独自の個別の変数があります。このようなオブジェクトを使用すると、個別の変数の値を初期化できます。彼らはそれをシリアル化し、別の変数に保存します。その後、変数値を逆シリアル化し、それらを個別に保存できます。データをシリアル化およびシリアル化解除するために、個別の値を持つ n 個の変数を追加できます。 allowed_classes を使用して、コード内のシリアル化データを検証しました。

例 #3

コード:

<?php
class demo
{
public $vars;
}
$vars1= new demo();
$vars1->vars= "siva";
$vars2= serialize($vars1);
echo "Welcome To My Domain<br> '$vars2'";
echo "<br><br>";
$vars3= unserialize($vars2);
echo "Have a Nice Day <br>";
echo  var_dump($vars3);
echo "<br> <br>";
echo "Thank you users your net result is shown" . $vars3->vars;
?>

出力:

PHPの初期化解除

最後の例では、PHP で配列とオブジェクトをアンシリアル化するためにキーと値のペアを使用するという点で、シリアル化関数とアンシリアル化関数の両方を使用しました。値「Siva」を持つ 1 つの変数を使用しました。これはプレーン テキスト文字列になり、値がシリアル化およびシリアル化解除されるオブジェクトに変換されます。

結論

PHP では、ユーザーフレンドリーな Web アプリケーションを作成するためにデフォルトの関数、変数、キーワードを使用しました。 Web ベースのアプリケーションで高度なテクニックを作成するために、いくつかのデフォルトのクラスとメソッドを使用できるため、より安全にデータを保存および取得するために、serialize() や unserialize() などのいくつかのテクニックを使用しました。

以上がPHPの初期化解除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPシリアル化次の記事:PHPシリアル化