>백엔드 개발 >PHP 튜토리얼 >yii2 및 php (역)직렬화 함정

yii2 및 php (역)직렬화 함정

WBOY
WBOY원래의
2016-07-29 08:52:031333검색

yii2에서 역할 기록에 대한 참고 사항

오늘 yii2용 RBAC 애플리케이션을 작성하여 역할에 대한 원래 기록을 수정하여 새 권한으로 전환하려고 했는데 다음 오류가 발생했습니다.

  • unserialize(): 127바이트 중 오프셋 36에서 오류

권한 구조(권한 이름, 역할 이름, 사용된 authManager 유형) 문제를 제거한 후, 캐릭터의 데이터 기록에 문제가 있는 것 같습니다. 원래 기록된 권한 데이터는 다음과 같습니다.


  • O:30:"consolerbacProfileAccessRule":3:{s:4:"name";s:14:"viewOwnProfile";s: 9: "createdAt";i:1460293714;s:9:"updatedAt";i:1460293714;}

PHP 직렬 배열이므로 아래 첨자에 관계없이 원래 배열에 있습니다. 또는 value, 직렬화 후에는 모두 값(문자열) 형식으로 나타나며 해당 첨자는 모두 고유한 길이입니다(그래서 O:30이 consolerbacProfileAccessRule을 참조한다는 설명도 나와 있습니다. 이 단어는 총 30자이고, 숫자로 표시되는 길이는 다릅니다(예: i:1460293714;). 해결책은 매우 간단합니다. 주로 직렬화 형식 문제입니다. 수정된 권한 기록은 다음과 같습니다:


  • O:28:"consolerbacAdminAccessRule":3:{s:4:"name";s:10:"visitAdmin";s:9 : "createdAt";i:1460293714;s:9:"updatedAt";i:1460293714;}

코드를 작성한다는 것은 내부 내용을 파악한 다음 이전 작업 단계에서 시작한다는 것을 의미합니다. 끝났습니다~ 이런 사소한 문제가 우리를 괴롭히지 않기를 바랍니다. 결국 우리는 오랫동안 그것에 대해 생각해 왔습니다. 실수만 하지 않았다면 더 혁신적인 코드를 작성할 수 있었을 것입니다.

').addClass('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

위에서는 yii와 php의 내용을 포함하여 yii2와 php (역)직렬화의 함정을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.