위버

base64 encode와 serialize를 한번에

· 2025-07-06 (일) 22:50:04 · 3453 · 2

배열형태의 리스트를 json말고 base64encode와 serialize로 넣고싶을때 사용하시면됩니다.

넣을때 wv_base64_encode_serialize($data)로 넣고, 풀때 $arr= wv_base64_decode_unserialize($data)로 쓰시면됩니다. 아래 코드는 common.lib.php에 넣어주세요

[code]

if(!function_exists('wv_is_base64_encoded')){
    function wv_is_base64_encoded($data){
        return base64_encode(base64_decode($data, true)) === $data;
    }
}
if(!function_exists('wv_is_serialized')){
    function wv_is_serialized( $data, $strict = true ) {
        // If it isn't a string, it isn't serialized.
        if ( ! is_string( $data ) ) {
            return false;
        }
        $data = trim( $data );
        if ( 'N;' === $data ) {
            return true;
        }
        if ( strlen( $data ) < 4 ) {
            return false;
        }
        if ( ':' !== $data[1] ) {
            return false;
        }
        if ( $strict ) {
            $lastc = substr( $data, -1 );
            if ( ';' !== $lastc && '}' !== $lastc ) {
                return false;
            }
        } else {
            $semicolon = strpos( $data, ';' );
            $brace     = strpos( $data, '}' );
            // Either ; or } must exist.
            if ( false === $semicolon && false === $brace ) {
                return false;
            }
            // But neither must be in the first X characters.
            if ( false !== $semicolon && $semicolon < 3 ) {
                return false;
            }
            if ( false !== $brace && $brace < 4 ) {
                return false;
            }
        }
        $token = $data[0];
        switch ( $token ) {
            case 's':
                if ( $strict ) {
                    if ( '"' !== substr( $data, -2, 1 ) ) {
                        return false;
                    }
                } elseif ( false === strpos( $data, '"' ) ) {
                    return false;
                }
            // Or else fall through.
            case 'a':
            case 'O':
            case 'E':
                return (bool) preg_match( "/^{$token}:[0-9]+:/s", $data );
            case 'b':
            case 'i':
            case 'd':
                $end = $strict ? '$' : '';
                return (bool) preg_match( "/^{$token}:[0-9.E+-]+;$end/", $data );
        }
        return false;
    }
}
if(!function_exists('wv_base64_decode_unserialize')){
    function wv_base64_decode_unserialize($data){

        if(wv_is_base64_encoded($data)){
            $data = base64_decode($data);
        }

        if(wv_is_serialized($data)){
            $data = unserialize($data);
        }

        return $data;
    }
}
if(!function_exists('wv_base64_encode_serialize')){
    function wv_base64_encode_serialize($data){



        if(!wv_is_serialized($data)){
            $data = serialize($data);
        }

        if(!wv_is_base64_encoded($data)){
            $data = base64_encode($data);
        }

        return $data;
    }
}

[/code]

|

댓글 2개

2025-07-12 (토) 08:56:57

감사합니다 ^^

감사합니다.

댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

2,788건
+
제목 글쓴이 날짜 조회
25-09-03 조회 3,504
25-09-02 조회 3,501
25-09-02 조회 3,330
25-08-29 조회 3,259
25-08-29 조회 3,167
25-08-26 조회 3,717
25-08-18 조회 3,476
25-08-16 조회 3,334
25-08-07 조회 3,475
25-08-05 조회 4,335
25-08-02 조회 3,472
25-07-28 조회 3,486
25-07-27 조회 3,761
25-07-25 조회 3,692
25-07-21 조회 3,245
25-07-19 조회 3,231
25-07-15 조회 4,543
25-07-14 조회 3,447
25-07-09 조회 3,261
25-07-07 조회 3,417
25-07-06 조회 3,454
25-07-06 조회 3,259
25-07-04 조회 3,060
25-06-30 조회 3,517
25-06-27 조회 3,247
25-06-27 조회 3,494
25-06-26 조회 3,263
25-06-26 조회 3,410
25-06-25 조회 3,407
25-06-24 조회 3,317