메뉴 건너뛰기

프로그램언어

조회 수 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의 쿼리부분에 사용하는 문자열을 인코딩할때 편리합니다.


  1. No Image 12Apr
    by
    2014/04/12 Views 26546 

    한글줄바꾸기 또는 utf-8 wordwrap

  2. No Image 27Feb
    by
    2014/02/27 Views 26351 

    해당하는 날짜가 그달의 몇주째인지 계산

  3. No Image 07Mar
    by
    2017/03/07 Views 26319 

    php 세션 유지시간 늘리기

  4. No Image 27Feb
    by
    2014/02/27 Views 26046 

    페이지 로딩 시간 측정

  5. No Image 21Sep
    by
    2016/09/21 Views 25959 

    환경변수 HTTP_USER_AGENT를 이용해서 스마트 기기 분류하기

  6. 디렉토리내 특정 확장자를 가진 파일 전부 삭제

  7. No Image 27Feb
    by
    2014/02/27 Views 25438 

    로또 숫자 랜덤하게 1~45까지 숫자 빼오기

  8. No Image 06Apr
    by
    2015/04/06 Views 25426 

    홈페이지 귀퉁이에 붙이는 공지창

  9. No Image 14Apr
    by
    2015/04/14 Views 25334 

    파일 삭제

  10. No Image 14Apr
    by
    2015/04/14 Views 25198 

    한글자르기 substr

  11. No Image 14Apr
    by
    2015/04/14 Views 24904 

    array (배열)

  12. No Image 07Mar
    by
    2017/03/07 Views 24849 

    기본적인 페이징

  13. No Image 27Feb
    by
    2014/02/27 Views 24444 

    $_SERVER변수

  14. No Image 27Feb
    by
    2014/02/27 Views 24276 

    필드값 저장

  15. No Image 14Apr
    by
    2015/04/14 Views 24250 

    addslashes 함수의 필요성

  16. No Image 23Dec
    by
    2016/12/23 Views 23943 

    $_SERVER 함수

  17. No Image 23Dec
    by
    2016/12/23 Views 23847 

    $_FILES

  18. No Image 25Mar
    by
    2015/03/25 Views 23347 

    [PHP] POST 로 넘어온 모든 변수값 확인하기

  19. POST, GET으로 배열값 받기(직렬화)

  20. ajax refresh 시키기(자동리플래쉬) with php

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved