我有两个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!";
}
答案 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!";
}