如何从请求的服务器页面获取数据?

时间:2012-09-18 11:56:52

标签: php curl file-get-contents

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

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

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

为什么会这样?有人可以帮我吗?

这是我用过的代码:

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!";
     }

2 个答案:

答案 0 :(得分: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);

此修复的来源here

答案 1 :(得分: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!";
     }