ホームページ >バックエンド開発 >PHPチュートリアル >yii2 と php の (逆) シリアル化の落とし穴

yii2 と php の (逆) シリアル化の落とし穴

WBOY
WBOYオリジナル
2016-07-29 08:52:031333ブラウズ

yii2 でのロールの記録に関するメモ

今日、私は yii2 用の RBAC アプリケーションを作成し、ロールに関する元のレコードを単純に変更して新しい権限に切り替えるつもりでしたが、次のエラーが発生しました:

  • unserialize(): Error at offset 36 of 127 bytes

権限構造 (権限名、ロール名、使用される authManager タイプ) の問題を解決した後、記録されたロールのデータを変更することが問題の原因であると思います。元の記録された権限データは次のとおりです:


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

PHPのシリアル化された配列なので、元の配列では添え字や値に関わらず、値(文字列)の形で現れます。 ) 直列化後、それらの添え字はすべて独自の長さになります (したがって、O:30 は合計 30 文字の単語 consolebacProfileAccessRule を指し、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); }); });

以上、yii2 と php (de)serialization の落とし穴について、yii と php の内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。