메뉴 건너뛰기

프로그램언어

조회 수 23284 추천 수 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 php 내장함수 2017.03.07 17001
159 www가 붙은 도메인과 안붙은 같은 도메인, 로그인 세션 유지 2017.03.07 17080
158 PHP 날짜/시간 정리 2017.03.07 18629
157 몫과 나머지 구하기 2017.03.07 18461
156 체크박스, post 로 넘기고 받아서 다시 체크하기, checkbox 2017.03.07 21125
155 파일 이름에서 확장자 추출마스터 2017.03.07 20061
154 http://홈주소/?mode=xxx 하는방법 2017.03.07 17642
153 기본적인 페이징 2017.03.07 24845
152 PHP 속도 테스트 20 가지 2017.03.06 18305
» POST, GET으로 배열값 받기(직렬화) file 2017.03.06 23284
150 파일 업로드 (중복처리) 2017.03.06 20178
149 간단한 PHP 파일 업로드, 다운로드 구현 2017.03.06 28541
148 다중 도메인에 따른 접속방법 2017.03.06 19370
147 네이버 지도 API 연동 PHP 소스 2017.03.06 18634
146 게시판 페이징 기법과 개념 file 2017.03.06 17323
145 PHP 도메인 이름이나 웹문서 주소 알아내기 2017.03.06 17589
144 그누보드, 여분필드 사용팁 2017.03.06 17604
143 엑셀(*.xls) 화일을 PHP에서 읽기 2017.03.06 17471
142 PHP 날짜, 시간 관련 함수. date(), mktime() 2017.03.06 16707
141 잡다한 php 2017.03.06 18501
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved