찾다

 >  Q&A  >  본문

php - 역직렬화 오류, 배경 데이터가 의심스럽게 깨졌나요?

serialize()를 사용하여 데이터를 직렬화한 다음 데이터베이스에 삽입한 다음 unserialize()를 사용하여 역직렬화하고 일부 데이터 문자열 오류가 발생합니다.
오류 내용은 다음과 같습니다.unserialize() [ function.unserialize ]: 2544바이트의 오프셋 0에 오류가 있습니다.

구글에서 여러 해결 방법을 검색해 보니 모두 인코딩 문제로 인해 문제가 발생했다고 합니다.
그래서 삽입한 곳이 base64_encode(serialize($str));로 변경되었습니다.
제가 있는 곳은 읽어보니
unserialize(preg_replace('!s:(d+):"(.*?)";!se', '"s:".strlen("$2").":로 변경되었습니다. "$2";"', $string))

해보았지만 완전히 해결되지 않았습니다. 나중에 일부 데이터그램에서 동일한 오류가 발생했습니다. 백그라운드 데이터를 보면 삽입된 내용이 아래의 잘못된 코드와 유사한 것으로 바뀌었습니다.

< /p>

이유를 알 수 있도록 도와주세요. 가급적이면 더 자세히 설명해주세요.

phpcn_u1582phpcn_u15822773일 전865

모든 응답(4)나는 대답할 것이다

  • PHPz

    PHPz2017-05-16 13:10:00

    소스 데이터를 게시하세요. 그렇지 않으면 어떻게 테스트할 수 있나요? .

    회신하다
    0
  • PHP中文网

    PHP中文网2017-05-16 13:10:00

    직렬화된 데이터에 문제가 있는지 확인하세요. 이전에는 serialize를 사용했는데 항상 문제가 있어서 json_decode

    로 변경할 수밖에 없었습니다.

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:10:00

    base64_encode("a:1") == "YTox".

    해당 데이터는 왜곡되지 않고 base64로 인코딩되었습니다.

    회신하다
    0
  • 怪我咯

    怪我咯2017-05-16 13:10:00

    으아아아

    회신하다
    0
  • 취소회신하다