잘못된 바이트 수 길이로 인해 손상된 직렬화된 문자열 복구
직렬화에는 복잡한 데이터 구조를 더 간단하고 기계가 읽을 수 있는 형식으로 변환하는 작업이 포함됩니다. 그러나 직렬화된 문자열이 손상되면 오류가 발생할 수 있습니다. 귀하의 경우 잘못된 바이트 수 길이로 인해 오류가 disebabkan입니다.
손상 이유
직렬화된 문자열의 바이트 수 길이는 각 요소의 크기를 나타냅니다. . 이 개수가 올바르지 않으면 역직렬화 프로세스가 실패할 수 있습니다. 작은따옴표(') 대신 큰따옴표(")를 사용하면 문자열이 단일 요소로 잘못 식별될 수 있습니다.
빠른 수정
손상된 문자열을 복구하려면 각 문자열의 바이트 수 길이를 다시 계산하면 됩니다. 요소:
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('').':\"\";'", $data);
미래 부패 방지
미래 부패를 방지하려면 다음 구현을 고려하세요.
function sanitize(&$value, $key) { $value = addslashes($value); } array_walk($h->vars['submitted_data'], "satitize");
손상 감지
나중에 손상된 직렬 문자열을 감지하려면 다음 함수를 사용하십시오.
function findSerializeError($data1) { // ... (code goes here) }
향상된 데이터베이스 스토리지
사용을 고려하세요. 직렬화된 데이터를 데이터베이스에 저장하기 전에 base64 인코딩과 같은 보다 강력한 저장 방법:
$toDatabase = base64_encode(serialize($data));
위 내용은 잘못된 바이트 수 길이로 손상된 직렬화된 문자열을 어떻게 복구할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!