0

我有两个 php 页面: client.phpserver.php

server.php在我的网络服务器上,它的作用是打开我的亚马逊产品页面并获取价格数据并将其序列化并将其返回给client.php

现在我遇到的问题是server.php正在获取数据,但是当我返回它并echo在 using 之后执行时unserialize(),它什么也没显示。但如果我echoserver.php中做,它会向我显示所有数据。

为什么会这样?任何人都可以帮助我吗?

这是我使用的代码:

客户端.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";

服务器.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 回答