메뉴 건너뛰기

프로그램언어

조회 수 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
번호 제목 날짜 조회 수
160 PHP 파일크기 단위 붙이기 (용량 변환) file size conversion source code 2018.07.04 5793
159 AJAX를 활용하여 JSON 댓글 처리하기 (PHP) 2018.07.04 8454
158 날짜, 시간 포맷하기 (PHP) 2018.07.04 5230
157 쿠폰번호 발행 업데이트판. (간단한 클래스화[PHP4 기준] 등...) 2018.07.19 6023
156 fcm 푸시 알림 php 테스트 2018.07.19 6044
155 PHP 특정 디렉토리에 있는 파일 갯수 구하기 2018.07.19 5452
154 gcm 푸시 알림 php 테스트 2018.07.19 5582
153 PHP 소스코드 인코딩(암호화)하기 2018.07.19 6643
152 마우스 오버시 사진변환, 파일에러시 대체이미지 적용(소스일부) 2018.07.24 4584
151 게시판 내용 숨김 클릭시 내용 출력 [ 참고 ] 2018.07.24 4767
150 날짜계산 몇일까지.. [ ex)4 일전 new 표시 ] 2018.07.24 4523
149 MySQL테이블의 내용을 엑셀파일(xls)로 다운로드 하기 2018.07.24 4798
148 키를 이용한 암호화/복호화 함수입니다. 2018.07.24 5741
147 헤더이용 다운로드 받을시 바로열기부분 소스 2018.07.24 7320
146 웹서버조회 소스 2018.07.24 4543
145 날짜/시간함수 정리 2018.08.29 2429
144 한글이 깨져서 나올 때 - iconv 2018.08.29 3933
143 PHP에서 모든 세션 정보를 화면에 출력하는 방법 2018.08.29 2694
142 PHP에서 자료, 데이터의 타입을 확인하는 방법, gettype() 2018.08.29 2465
141 PHP에서의 대칭 암호화/복호화 ― 간단한 예제에서 DB 입/출력까지 2018.09.14 3548
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved