3

phpserializeserek のモジュール ( Unserialize PHP data in pythonから取得)を使用して、Python で PHP セッション データのシリアル化を解除しようとしましたが、私には不可能のようです。

どちらのモジュールも、PHP セッション データが次のようになることを想定しています。

a:2:{s:3:"Usr";s:5:"AxL11";s:2:"Id";s:1:"2";}

ただし、セッション ファイルに保存されるデータは次のとおりです。

Id|s:1:"2";Usr|s:5:"AxL11";

どんな助けでも大歓迎です。

4

2 に答える 2

2

Google の 3 ページ目に到達した後、提供した文字列で動作する元のアプリケーションphpserializeのフォークを見つけました。

>>> loads('Id|s:1:"2";Usr|s:5:"AxL11";')
{'Id': '2', 'Usr': 'AxL11'}
于 2013-10-13T23:58:24.467 に答える
1

PHPセッションのシリアライゼーションに使用されるデフォルトのアルゴリズムは で使用されるものではなく、と呼ばれるserialize別の内部の壊れた形式ですphp

数値インデックスも文字列インデックスも格納できません。特殊文字 (|および!)が含まれています$_SESSION.


正しい解決策は、不自由なデフォルトのセッション シリアライゼーション形式を、Armin Ronacher のオリジナル ライブラリでサポートされているものに変更するか、 INI 設定phpserializeを変更して、JSON としてシリアライズおよびデシリアライズすることです。session.serialize_handler

PHP側で最大限の互換性を得るために、前者を使用することにしました

ini_set('session.serialize_handler', 'php_serialize')

これにより、新しいセッションは標準と互換性がありますphpserialize

于 2016-08-02T06:32:50.397 に答える