메뉴 건너뛰기

프로그램언어

조회 수 23285 추천 수 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
번호 제목 날짜 조회 수
300 GD를 이용한 스팸성 게시물 차단을 위한 보안 단어 입력 예제 2014.02.27 26945
299 glob 현재 디렉토리에서 pattern에 일치하는 경로 이름을 배열로 반환 2016.12.23 19636
298 headers_sent 헤더 전송 여부를 확인 2016.12.23 19405
297 HEREDOC <<< ( PHP에서 echo로 HTML쉽게 표시하기 ) 2021.03.26 371
296 htmlentities <-> html_entity_decode (엔티티 2014.04.12 30409
295 HTTP Protocol의 data method - GET / POST 2016.04.22 20637
294 HTTP 인증하기, 로그인창 띄우기 file 2021.03.26 214
293 http://홈주소/?mode=xxx 하는방법 2017.03.07 17642
292 iframe 사용시 iframe의 높이가 내용의 높이만큼 자동으로 조절 2014.04.12 21862
291 implode — 문자열로 배열 원소를 결합 2016.12.23 19951
290 include 와 namespace 2019.01.08 1087
289 ini_get - php.ini에 지정되어 있는 지시어의 값을 읽어온다 2016.12.23 19520
288 input 자동완성기능 끄기 2019.02.19 1217
287 is_array — 변수가 배열인지 확인 2016.12.23 18048
286 Javascript 두 좌표 사이의 거리 구하기, 두 좌표의 중앙 좌표 구하기 file 2020.09.23 535
285 JAVASCRIPT 차트, 그래프 모음 (php chart, graph ) 2021.03.26 1614
284 jQuery 개발자를 위한 메모 - 레퍼런스 2014.03.26 19522
283 jQuery 개발자를 위한 메모 - 플러그 인 2014.03.26 19257
282 jquery 이용 아이디 중복체크 실시간 2014.04.12 20341
281 JSON and JavaScript usage 2014.03.26 19064
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved