1

Python phpserializeライブラリを使用して、PHPからシリアル化されたセッションデータを読み取ろうとしています。しかし、私のPHPセットアップは、phpserialize(およびWeb全体の他のほとんどすべてのドキュメント)が期待するものとは異なる形式でセッションデータを保存していることを発見しました。例えば:

$_SESSION["userid"] = 42;
echo session_encode();

プリントアウト

userid|i:42;

一方、phpserializeはこれを次のようにシリアル化します。

phpserialize.serialize({'userid':42})
'a:1:{s:6:"userid";i:42;}'

phpinfo()を介してsession.serialize_handlerを確認したところ、「php」に設定されています(他のオプションはphp_binaryとwddxです)。結果として、Pythonで標準のphpシリアル化ライブラリを使用できません。助言がありますか?

4

2 に答える 2

3

これをPHPからPythonに渡す場合serializeは、配列を呼び出す必要があります。$_SESSION

例:

echo serialize($_SESSION);

結果は、PHPシリアル化ライブラリによって解釈されます。

session_encodeと同じではありませんserialize

于 2012-08-13T16:38:53.350 に答える
1

PHPでは変数をシリアル化し、Pythonでは配列をシリアル化します。

このコード:

$data = array('userid' => 42);
echo json_encode($data);

phpserializeと同じ結果が表示されます。

ただし、phpアプリケーションとpythonアプリケーションの間でデータを転送するには、json_encode/json_decodeを使用することをお勧めします。

于 2012-08-13T14:58:44.417 に答える