본문 바로가기
코드이그나이터와 php7와 mysql

PHP팁. base64 문자열 디코딩이 안될 때

반응형

PHP팁. base64 문자열 디코딩이 안될 때

base64 인코딩을 아시나요?
이메일을 주고 받거나 홈페이지에 파일을 업로드할 때,
문제가 없도록 하기 위해서 본래 내용을 64개의 문자로만 구성된 문장으로 변환하는 것을 의미합니다.

이를 base64 인코딩 문자열이라고 하는데 64진수라고도 불릴수 있습니다.
본래 내용을 base64 문자열로 바꾸는 과정을 인코딩,
base64 문자열을 본래 내용으로 해독하여 복원하는 과정을 디코딩이라고 하지요.

이를테면 'cray'를 base64 인코딩 문자열로 바꾸면 'Y3JheQ=='이 되고,
이 문장을 다시 디코딩하면 'cray'가 됩니다.

php에서는 base64_encode( ) 함수와 base64_decode( ) 함수가 각각 그에 해당합니다.

그런데 문제는 가끔 php에서 해독을 못하는 경우가 있는데요.
웹을 통하여 전송된 자료인 경우 일부 문자가 바뀌기 때문에 그러할 때가 있습니다.

그 때 조치할 수 있는 방법입니다.
이 소스는 잘못된 '-'기호를 '+'로 바꾸고, '_' 기호를 '/'로 바꾸어 준다음,
base64_decode( ) 함수를 실행해주시면 됩니다.

$str = strtr($str, array('-' => '+', '_' => '/'));
$str=base64_decode($str);

 

반응형