2

シリアル化されたデータをクエリ文字列で渡します

$msg = $nos.' of '.$recordsExtracted.' records imported';
header('Location: ../import-to-master.php?msg='.serialize($msg));

私はデータをキャプチャするために以下を使用しています

if(isset($_GET['msg']))
{
    $msg=unserialize($_GET['msg']);
}

ローカルホストでは、エコー時$msgにメッセージが画面に表示されます。

ただし、本番サーバーでは、メッセージはURLに表示されますが

import-to-master.php?msg=s:23:"5 of 5 records imported";

エコー$msgは何も表示しません。処理されていることを確認するため$msgに、次のような文字列を追加しました

$msg .= 'sdage';

そして、ページを更新すると、ページに表示sdageされるようになりました。つまり、これはunserializeサーバーで機能していないことを意味します。

私の最初の考えは、おそらく本番サーバーのPHPバージョンはサポートしていなかっunserializeたのですが、バージョンは5.2でありserializeunserialize

何が問題なのか疑問に思います。

PS:はい、データをエスケープすることはしていませんが、現在の優先事項は、現在の問題を解決してから、クエリ文字列から安全な入力を取得することです。

4

1 に答える 1

1

一連の試行錯誤の後、私はそれを使用して解決しました

if(isset($_GET['msg']))
{
    $msg=unserialize(stripslashes($_GET['msg']));
}
于 2012-12-28T14:33:53.510 に答える