php - 역직렬화 오류, 배경 데이터가 의심스럽게 깨졌나요?
phpcn_u1582
phpcn_u1582 2017-05-16 13:08:00
0
4
872

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

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

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

< /p>

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

phpcn_u1582
phpcn_u1582

모든 응답(4)
PHPzhong

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

洪涛

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

로 변경할 수밖에 없었습니다.
曾经蜡笔没有小新

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

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

刘奇

으아아아

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿