개체와 CodeIgniter 2.2 세션을 사용할 때 Unserialize () 오프셋 오류

jjwdesign

CodeIgniter 2.2에서 이전 코드를 디버깅하려고합니다. 세션을 통해 일부 데이터를 실행할 때 직렬화 해제 오류, 메시지 : unserialize () : 163 바이트의 오프셋 160에서 오류가 발생했습니다. 디버깅 및 조사를 수행 한 후 세션에서 데이터를 직렬화 해제 할 때 일반적인 백 슬래시 문제라는 것을 알았습니다.

내가 사용중인 직렬화 된 데이터에는 백 슬래시가있는 데이터 개체가있어 오류가 발생합니다. 표준 클래스 객체도 처리 할 수있는 대체품이 필요합니다.

누군가 codeigniter의 Session _serialize () 및 _unserialize () 메서드에 대한 빠른 대체를 권장 할 수 있습니까?

public function data_test() {

    $input = array(
        (object)array('name' => 'test2', 'desc' => 'bla bla ob/gyn'),
        (object)array('name' => 'test2', 'desc' => 'bla bla ob\\gyn'),
    );
    var_dump($input);

    $data = $this->_serialize($input);
    var_dump($data);

    $result = $this->_unserialize($data);
    var_dump($result);


}



// --------------------------------------------------------------------

/**
 * Serialize an array
 *
 * This function first converts any slashes found in the array to a temporary
 * marker, so when it gets unserialized the slashes will be preserved
 *
 * @access  private
 * @param   array
 * @return  string
 */
function _serialize($data) {
    if (is_array($data)) {
        foreach ($data as $key => $val) {
            if (is_string($val)) {
                $data[$key] = str_replace('\\', '{{slash}}', $val);
            }
        }
    } else {
        if (is_string($data)) {
            $data = str_replace('\\', '{{slash}}', $data);
        }
    }

    return serialize($data);
}

// --------------------------------------------------------------------

/**
 * Unserialize
 *
 * This function unserializes a data string, then converts any
 * temporary slash markers back to actual slashes
 *
 * @access  private
 * @param   array
 * @return  string
 */
function _unserialize($data) {

    $data = unserialize(strip_slashes($data));

    if (is_array($data)) {
        foreach ($data as $key => $val) {
            if (is_string($val)) {
                $data[$key] = str_replace('{{slash}}', '\\', $val);
            }
        }

        return $data;
    }

    return (is_string($data)) ? str_replace('{{slash}}', '\\', $data) : $data;
}
jjwdesign
/**
 * Serialize an array
 *
 * This function serializes the data and then base64_encodes it for 
 * storage with memcached. This avoids the common backslash issue.
 *
 * @access  private
 * @param   array
 * @return  string
 */
function _serialize($data) {
    return base64_encode(serialize($data));
}

// --------------------------------------------------------------------

/**
 * Unserialize
 *
 * This function unserializes a data string. I first base64_decodes
 * the data from memcached storage.
 */
function _unserialize($data) {
    return unserialize(base64_decode($data));
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

변수를 사용하여 배열을 오프셋 할 때 세그 오류

분류에서Dev

templateUrl을 사용할 때 Angular2 테스트 오류

분류에서Dev

Codeigniter 모델 치명적 오류 : 개체 컨텍스트에 없을 때 $ this 사용

분류에서Dev

사용자 정의 QSurfaceFormat을 사용할 때 PySide2 OpenGL 오류

분류에서Dev

Silex / Symfony와 함께 사용할 때 Sentinel 세션 오류

분류에서Dev

sed를 사용하여 행별 문자열을 병렬로 대체 할 때 구문 오류 : {= s / _1 / _2 / =}?

분류에서Dev

플라스크에서 세션을 사용할 때 키 오류

분류에서Dev

2D 배열을 사용할 때 '잘못된 식 시작'오류

분류에서Dev

R 셀, rpy2, Jupyter 노트북에서 Pandas 데이터 프레임을 사용할 때 오류 발생

분류에서Dev

RStudio에서 edit () 함수를 사용할 때 .External2 오류

분류에서Dev

+ 2 오프셋으로 범위 복사

분류에서Dev

Glyphter.com을 사용하여 SVG를 글꼴로 변환 할 때 오프셋-오프셋

분류에서Dev

2 개의 데이터 프레임을 병합하고 "new"열에 값을 할당 할 때 오류 발생

분류에서Dev

Doctrine을 사용하여 Oracle 메타 데이터를 Symfony2로 가져 오려고 할 때 SQL 오류

분류에서Dev

부트 스트랩 3-오프셋을 사용하여 '행'에서 동일한 크기의 'cols'2 개를 중앙에 배치 할 수 없습니다.

분류에서Dev

개체에서 2D 벡터를 인쇄 할 때 오류 발생

분류에서Dev

오프셋 사용 (런타임 오류 424 개체 필요)

분류에서Dev

SQLSTATE 58004, DB2 LUW의 LISTAGG와 함께 JSON_OBJECT ()에서 NULL을 사용할 때 "유효하지 않은 qnc 할당"오류

분류에서Dev

새 스프링 세션을 추가 할 때 쿠키 값 오류

분류에서Dev

포트란 코드와 함께 f2py 도구를 사용할 때 어셈블러 오류

분류에서Dev

포트란 코드와 함께 f2py 도구를 사용할 때 어셈블러 오류

분류에서Dev

대시에서 프로세스 대체를 사용할 때 '구문 오류 : "("예상치 못한 "오류보고

분류에서Dev

제한 / 오프셋을 사용할 때 mysql 쿼리에서 결과가 겹침

분류에서Dev

포착되지 않은 오류 : __callStatic을 사용할 때 개체 컨텍스트에 없을 때 $ this 사용

분류에서Dev

lit 요소와 함께 unsafeHTML을 사용할 때 오류

분류에서Dev

pyinstaller와 함께 pynput을 사용할 때 오류 발생

분류에서Dev

NamedRddSupport와 함께 SparkJob을 사용할 때 오류 발생

분류에서Dev

에 ValueError : 오류 검사 입력 할 때 : 예상 conv2d_input 4 개 차원을 가지고

분류에서Dev

Apache2 및 Passenger를 사용하여 Rails 앱을 배포 할 때 404 찾을 수 없음 오류

Related 관련 기사

  1. 1

    변수를 사용하여 배열을 오프셋 할 때 세그 오류

  2. 2

    templateUrl을 사용할 때 Angular2 테스트 오류

  3. 3

    Codeigniter 모델 치명적 오류 : 개체 컨텍스트에 없을 때 $ this 사용

  4. 4

    사용자 정의 QSurfaceFormat을 사용할 때 PySide2 OpenGL 오류

  5. 5

    Silex / Symfony와 함께 사용할 때 Sentinel 세션 오류

  6. 6

    sed를 사용하여 행별 문자열을 병렬로 대체 할 때 구문 오류 : {= s / _1 / _2 / =}?

  7. 7

    플라스크에서 세션을 사용할 때 키 오류

  8. 8

    2D 배열을 사용할 때 '잘못된 식 시작'오류

  9. 9

    R 셀, rpy2, Jupyter 노트북에서 Pandas 데이터 프레임을 사용할 때 오류 발생

  10. 10

    RStudio에서 edit () 함수를 사용할 때 .External2 오류

  11. 11

    + 2 오프셋으로 범위 복사

  12. 12

    Glyphter.com을 사용하여 SVG를 글꼴로 변환 할 때 오프셋-오프셋

  13. 13

    2 개의 데이터 프레임을 병합하고 "new"열에 값을 할당 할 때 오류 발생

  14. 14

    Doctrine을 사용하여 Oracle 메타 데이터를 Symfony2로 가져 오려고 할 때 SQL 오류

  15. 15

    부트 스트랩 3-오프셋을 사용하여 '행'에서 동일한 크기의 'cols'2 개를 중앙에 배치 할 수 없습니다.

  16. 16

    개체에서 2D 벡터를 인쇄 할 때 오류 발생

  17. 17

    오프셋 사용 (런타임 오류 424 개체 필요)

  18. 18

    SQLSTATE 58004, DB2 LUW의 LISTAGG와 함께 JSON_OBJECT ()에서 NULL을 사용할 때 "유효하지 않은 qnc 할당"오류

  19. 19

    새 스프링 세션을 추가 할 때 쿠키 값 오류

  20. 20

    포트란 코드와 함께 f2py 도구를 사용할 때 어셈블러 오류

  21. 21

    포트란 코드와 함께 f2py 도구를 사용할 때 어셈블러 오류

  22. 22

    대시에서 프로세스 대체를 사용할 때 '구문 오류 : "("예상치 못한 "오류보고

  23. 23

    제한 / 오프셋을 사용할 때 mysql 쿼리에서 결과가 겹침

  24. 24

    포착되지 않은 오류 : __callStatic을 사용할 때 개체 컨텍스트에 없을 때 $ this 사용

  25. 25

    lit 요소와 함께 unsafeHTML을 사용할 때 오류

  26. 26

    pyinstaller와 함께 pynput을 사용할 때 오류 발생

  27. 27

    NamedRddSupport와 함께 SparkJob을 사용할 때 오류 발생

  28. 28

    에 ValueError : 오류 검사 입력 할 때 : 예상 conv2d_input 4 개 차원을 가지고

  29. 29

    Apache2 및 Passenger를 사용하여 Rails 앱을 배포 할 때 404 찾을 수 없음 오류

뜨겁다태그

보관