[PHP] base64_serialize, base64_unserialize 함수
[PHP] base64_serialize, base64_unserialize 함수
REDINFO
약 2년전 2021-10-11 21:31:41

이번에 소개할 함수는 serialize , unserialize PHP 기본 함수를 base64로 인코딩과 디코딩하여 처리해주는 함수이다.  그렇다면 왜 base64 로 인코딩 및 디코딩을 해주는지 궁금할 수 있다. 

 

그이유는 바로 DB저장에 있으며 DB저장시 따움표 처리때문에 데이터가 손상될 우려가 있기때문에 그렇다면 MYSQL 이스케이프 처리하면 되지 않느냐? 할 수 있지만 이것도 잘사용해야하는게 기본적으로 serialize 함수처리 시 알다시피 데이터 정보를 같이 저장하는데 값의 길이도 함께 저장이 되기 때문에 어느순간 데이터가 잘못  이스케이프 되서 손상될 수 있는 위험이 있다. 

 

따라서 이스케이프 하지 않고 base64 로 변환후 저장하면 데이터 손상되는것을 막을 수 있다. 

 

하단은 base64로 쉽게 인코딩 및 디코딩 할 수 있도록 도와주는 함수이다. 

 

base64_serialize() - serialize 화 데이터를 base64 로 인코딩

// serialize aftrer base64 encode
if( !function_exists('base64_serialize')){
	function base64_serialize($arr = array())
	{
		if( count($arr) < 1){ return ''; }
		$data = serialize($arr);
		$serialize = base64_encode($data);
		return $serialize;
	}
}

 

base64_unserialize : serialize base64 데이터를 디코딩

// base64 decode aftrer serialize
if( !function_exists('base64_unserialize')){
	function base64_unserialize($data)
	{
		if( $data == '') return array();
		if( base64_encode(base64_decode($data)) == $data){
			$data = base64_decode($data);
			$unserialize = unserialize($data);
			if( $unserialize === false){ return array(); }
			else{ return $unserialize; }
		}else{
			$unserialize = unserialize($data);
			if( $unserialize === false){ return array(); }
			else{ return $unserialize; }
		}
	}
}

 

이 포스트글이 도움이 되었나요?
3
카테고리 연관글

Comment

댓글작성

0(500) | 1(30)