메뉴 건너뛰기

프로그램언어

조회 수 23286 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

간혹 많은 량의 변수 및 데이터를

다른 페이지로 이동시켜서 처리해야할 경우가 많습니다.

이를 위해서 최소한 배열이나 객체를 이용해서 post나 get형식으로

보내야 하는데..실제로 구현하면 되지 않습니다.

한번쯤은 경험이 다들 있으시라고 봅니다.

 

이를 위해서 직렬화를 이용하면 매우 유용하게 작업을 할 수 있습니다.

먼저 직렬화의 간단한 개념을 알아보도록 하죠

 

직렬화(Serialization)란 php 변수나 객체에 저장된 것을

바이트 스트림으로 바꾸어 데이터베이스에 저장하거나 url을 사용해

다른 페이지로 보낼 때 사용하는 것을 말합니다.

직렬화하지 않고 배열이나 객체를 전부를 저장하거나 넘겨주기란 굉장히 힘듭니다.

 

그렇기 때문에

Serialize(), Unserialize()함수를 이용해 보죠

간단한 예를 통해서 한번 보도록 하겠습니다.

 

// test1.php

 

<?php
 
 $arrVar;

// 2차원 배열 선언하여 값을 할당합니다.

// 총 25개의 공간의 많은 량의 데이터가 저장이 되겠죠

 for($i=0; $i<5; $i++)
 {
  for($j=0; $j<5; $j++)
  {
   $arrVar[$i][$j] = "arr".$i.$j;
   echo $arrVar[$i][$j];
     }
 }

// 이것을 직렬화 시켜서 $x1이라는 변수에 담아 봅니다.

 // urlendcode()함수는 아래에서 설명합니다.

 $x1 = urlencode(serialize($arrVar));

 echo $x1;

?>
<html>
 <head>
  <body>

  // 포스트형식으로 보냅니다.
   <form name="frm" method='POST' action="test2.php?"?>
    <input type='hidden' name = 'data' value=<?=$x1?>/>
    <input type='submit'/>
   </form>
  </body>
 </head>
</html>

 

 

 

// test2.php

 

<?php
// 포스트로 직렬화 된 객체를 받았습니다.
 $arrVar1 = $_POST['data'];

// 직렬화를 해제하여 이를 $x2 객체에 담습니다. 
 $x2 = unserialize(urldecode($arrVar1));

 

// 화면에 한번 배열을 찍어봅니다.

// 웹페이지가 뜨면 화면에 오른쪽 마우스를 클릭하고 소스 보기로 보시면 좋아요

 print_r($x2);

 for($i=0; $i<5; $i++)
 {
  for($j=0; $j<5; $j++)
  {
   echo $x2[$i][$j];

  }
 }


?>

실행결과는 아래와 같습니다.

먼저 test1.php 화면을 띄웁니다.

아래와 같이 막 데이터가 직렬화 되어 표현됩니다.

그리고 나서는 쿼리전송을 클릭합니다.

 

01.jpg

 

 

test2.php 의 페이지 입니다.

print_r()을 이용해서 찍었을때의 화면과

for문을 활용에 데이터를 찍은 화면입니다.


02.jpg

 

test2.php 화면의 소스보기 화면입니다.

값이 무사히 손실없이 넘어온것이 보입니다.
03.jpg


이상 위에서 실행된 직렬화 사용예를 간략하게 보았습니다.

직렬화된 데이터는 문자열이기 때문에 DB에 원하는곳에 저장이 가능하기도 합니다.

데이터베이스에 쓰기전에 addSlashes()함수를 쓰는것을 잊지 말도록 해야 합니다.

또한 직렬화된 문장에 따옴표가 있다는것도 유의해야합니다.

 

위의 코드에서 보시면

urlencode()함수가 보입니다.

이는 '_' [언더바]를 제외한 모든 영숫자가 아닌 문자를 %사이에 이어지는 두 16진수로 교체되고

공백은 플러스(+)사인으로 교체한 문자열을 반환합니다.

이는 www폼에서 application/x-www-urlendcoded 매체형과 같은 방식입니다.

 

한마디로 데이터를 인코딩하는 것입니다.

주로 url의 쿼리부분에 사용하는 문자열을 인코딩할때 편리합니다.


List of Articles
번호 제목 날짜 조회 수
160 www가 붙은 도메인과 안붙은 같은 도메인, 로그인 세션 유지 2017.03.07 17080
159 [PHP 기초] 함수에 관해서 2021.03.27 268
158 [PHP] POST 로 넘어온 모든 변수값 확인하기 2015.03.25 23347
157 [PHP] 게시판 글쓰기와 이미지 파일 DB 저장 및 불러오기 예제 2017.02.19 35888
156 [PHP] 서버 운영하시는분 서버 꺼졌을때 메시지 띄우기 2015.04.06 20324
155 [PHP] 한글명 파일 다운로드받기 2014.03.26 20551
154 [PHP기초] 데이터 집합 - 배열다루기 2021.03.27 263
153 [PHP기초] 상속기본 2021.03.27 214
152 [PHP기초] 생성자(인스턴스 초기화) 2021.03.27 265
151 [PHP기초] 접근제어자(access modifier) 2021.03.27 288
150 [PHP기초] 함수와 객체의 비교 2021.03.27 291
149 [이클립스]PHP 개발환경 만들기 file 2018.07.04 7941
148 가변변수로 만든 배열 2021.03.26 272
147 간단한 PHP 파일 업로드, 다운로드 구현 2017.03.06 28547
146 간단한 캡차파일 만들기 captcha file 2023.01.12 261
145 검색어 처리 루틴 2015.04.14 20778
144 게시판 내용 숨김 클릭시 내용 출력 [ 참고 ] 2018.07.24 4767
143 게시판 페이징 기법과 개념 file 2017.03.06 17323
142 경로 제외한 파일 이름만 선택하는 방법, Basename() 2020.11.23 429
141 공백문자 체크 2019.01.08 1625
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved