0

client.phpserver.phpの2つのphpページを取得 しました

server.phpは私のWebサーバー上にあり、Amazon製品ページを開いて価格データを取得し、シリアル化してclient.phpに返します。

今私が抱えている問題は、server.phpがデータを取得していることですが、それを返し、echo使用後に実行するとunserialize()、何も表示されません。しかしechoserver.phpで行うと、すべてのデータが表示されます。

なぜこうなった?誰か助けてくれませんか?

これは私が使用したコードです:

client.php

$url = "http://www.myurl.com/iec/Server.php?asin=$asin&platform=$platform_variant";
$azn_data = file_get_contents($url);
$azn_data = unserialize($azn_data);
echo "\nReturned Data = $azn_data\n";

server.php

if(isset($_GET["asin"]))
     {
         $asin = $_GET["asin"];
         $platform = $_GET["platform"];
         echo "\nASIN = $asin\nPlatform = $platform";
         //Below line gets all serialize price data for my product
         $serialized_data = amazon_data_chooser($asin, $platform);

         return($serialized_data);
     }
     else
     {
         echo "Warning: No Data Found!";
     }
4

2 に答える 2

1

server.phpで、次の行を置き換える必要があります。

return($serialized_data);

これのために:

echo $serialized_data;

client.phpはserver.phpの出力returnを読み取るため、関数から呼び出し元のコードに情報を渡すために使用されます。

更新
上記の修正とは別に、unserialize()データにあると思われる文字の特別な組み合わせを示す関数のバグが発生しています。解決策はbase64()、データを渡す前にデータをエンコードすることでバグを回避することserialize()です。これ:

client.php

$azn_data = unserialize(base64_decode($azn_data));

server.php

echo base64_encode($serialized_data);

この修正のソースはここにあります

于 2012-09-18T12:20:16.243 に答える
0

サーバー側でデータをシリアル化していないため、クライアント側で逆シリアル化するものはありません。

return(serialize($serialized_data));

編集:

if(isset($_GET["asin"]))
     {
         $asin = $_GET["asin"];
         $platform = $_GET["platform"];
         echo "\nASIN = $asin\nPlatform = $platform";
         //Below line gets all serialize price data for my product
         $serialized_data = amazon_data_chooser($asin, $platform);

         die(serialize($serialized_data));
     }
     else
     {
         echo "Warning: No Data Found!";
     }
于 2012-09-18T12:03:51.820 に答える