我有两个php页面:client.php和server.php
server.php在我的web服务器上,它所做的是打开我的亚马逊产品页面,获取价格数据并将其序列化并返回给client.php。
现在,我遇到的问题是,server.php正在获取数据,但是当我返回数据并在使用unserialize()之后执行echo时,它什么也不会显示。但是,如果我使用echo in server.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!";
}发布于 2012-09-18 12:20:16
在server.php上,您需要替换以下行:
return($serialized_data);这一次:
echo $serialized_data;由于client.php读取server.php的输出,所以return用于将信息从函数传递给调用方代码。
更新
除了上面的修正之外,您还碰到了unserialize()函数中的一个bug,它提供了一些特殊的字符组合,您的数据似乎也有这种特性,解决方案是在将数据传递给serialize()之前通过base64()编码来解决这个错误,如下所示:
在client.php
$azn_data = unserialize(base64_decode($azn_data));在server.php
echo base64_encode($serialized_data);此修复here的源。
发布于 2012-09-18 12:03:51
您没有在服务器端序列化您的数据,因此在客户端没有什么可反序列化的。
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!";
}https://stackoverflow.com/questions/12476557
复制相似问题