>백엔드 개발 >PHP 튜토리얼 >PHP 초기화 해제

PHP 초기화 해제

WBOY
WBOY원래의
2024-08-29 12:51:251118검색

PHP unserialize는 직렬화된 데이터를 실제 사용자 입력 데이터로 변환하는 데 사용할 수 있는 함수 중 하나입니다. 이는 직렬화 기능의 반대 프로세스입니다. 주로 배열, 매핑 컬렉션에 초점을 맞춥니다. 각 요소의 배열 인덱스를 계산합니다. 큰 크기 또는 기타 복잡한 데이터 구조에서 데이터를 작동하기 위해 몇 가지 기본 방법을 사용했습니다. 또한 직렬화 해제()도 수행했습니다. 메소드는 사용자 입력이 역직렬화 불가능한 경우 부울 값을 반환하므로 출력 콘솔에 false가 반환되며 역직렬화 기능을 위해 객체가 별도로 생성됩니다.

광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

구문:

PHP에는 보다 정교한 웹 기반 애플리케이션을 만들기 위한 변수, 키워드 및 함수에 대한 고유한 구문이 있습니다. 일반적으로 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() 함수를 사용하면 항상 비직렬화 개체에 대해 보안을 강화하고 더 보호할 부울 조건을 반환하거나 이를 신뢰할 수 없는 데이터라고 부를 수 있습니다. 따라서 기계 외부의 다른 악성 코드, 바이러스에 대해서는 피할 수 있습니다. 또한 코드 주입과 DB 종료로 보안을 유지하므로 신뢰할 수 없는 악성 코드 사이트에 대한 일부 SQL 주입 공격을 피할 수 있습니다.

일반적으로 unserialize() 함수는 str과 options라는 두 가지 매개변수를 사용합니다. str은 역직렬화를 기다리는 직렬화된 문자열을 포함하는 매개변수 중 하나이고 옵션은 유효한 사용자, 특히 allowed_classes와 같은 내장 클래스에 대해서만 허용되는 특정 함수 동작에 대한 제어를 위해 포함된 배열 중 하나입니다. 지정된 클래스 이름과 특히 _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 문을 사용하여 인쇄합니다. 콘솔에서 결과를 인쇄하려면 인쇄, 에코 등과 같은 다른 기본 방법을 사용합니다. 이는 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 초기화 해제

두 번째 예에서는 동일한 직렬화 및 역직렬화 개념을 사용했습니다. 그래도 여기서는 몇 가지 클래스를 사용했습니다. 또한 각 클래스의 부모-자식 관계에는 클래스 외부에서 동일한 변수를 활용하기 위한 공용 액세스 한정자가 있는 별도의 변수가 있습니다. 그런 객체를 사용하면 별도의 변수에 대한 값을 초기화할 수 있습니다. 직렬화하여 별도의 변수에 저장합니다. 그런 다음 변수 값을 역직렬화하여 별도로 저장할 수 있습니다. 데이터를 직렬화 및 역직렬화하기 위해 개별 값을 가진 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"인 하나의 변수를 사용했는데 이는 일반 텍스트 문자열이 된 다음 값이 직렬화되고 직렬화 해제된 개체로 다시 변환됩니다.

결론

PHP에서는 웹 애플리케이션을 사용자 친화적으로 만들기 위해 기본 함수, 변수 및 키워드를 사용했습니다. 이와 같이 웹 기반 애플리케이션에서 일부 고급 기술을 생성하기 위해 일부 기본 클래스와 메소드를 사용할 수 있으므로 데이터를 보다 안전하게 저장하고 검색하기 위해 serialize() 및 unserialize()와 같은 일부 기술을 사용했습니다.

위 내용은 PHP 초기화 해제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP 직렬화다음 기사:PHP 직렬화