我正在处理的具体问题是使用 Google 图表 API 启用 https,以及在 url 字符串上使用 php file_get_contents 时可能的字符限制。让我带你了解正在发生的事情。我使用网上的一些教程取得了不错的进展,特别是启用 https。我正在使用本教程中的“基本方法”:
http://webguru.org/2009/11/09/php/how-to-use-google-charts-api-in-your-secure-https-webpage/
我有一个 chart.php 文件,其中包含以下代码:
<?php
$url = urldecode($_GET['api_url']);
$image_contents = file_get_contents($url);
echo $image_contents;
exit;
?>
我从我的主页调用这个文件,传递一个“测试”谷歌图表 URL(我使用了许多不同的)给它,它有 513 个字符长:
$chartUrl = urlencode('http://chart.apis.google.com/chart?chxl=0:|Jan|Feb|Mar|Jun|Jul|Aug|1:|100|75|50|25|0&chxt=x,y&chs=300x150&cht=lc&chd=t:60.037,57.869,56.39,51.408,42.773,39.38,38.494,31.165,30.397,26.876,23.841,20.253,16.232,13.417,12.677,15.248,16.244,13.434,10.331,10.58,9.738,10.717,11.282,10.758,10.083,17.299,6.142,19.044,7.331,8.898,14.494,17.054,16.546,13.559,13.892,12.541,16.004,20.026,18.529,20.265,23.13,27.584,28.966,31.691,36.72,40.083,41.538,42.788,42.322,43.593,44.326,46.152,46.312,47.454&chg=25,25&chls=0.75,-1,-1');
要在我的主页中显示图像,我使用以下代码:
<img src="https://mysite.com/chart.php?api_url=<?php echo $chartUrl; ?>" />
示例 $chartUrl 字符串不应显示任何内容。在 $chartUrl 字符串长度超过 512 个字符(未编码)之前,它将正常工作。例如,如果您在下面使用此字符串(512 个字符长):
$chartUrl = urlencode('http://chart.apis.google.com/chart?chxl=0:|Jan|Feb|Mar|Jun|Jul|Aug|1:|100|75|50|25|0&chxt=x,y&chs=300x150&cht=lc&chd=t:60.037,57.869,56.39,51.408,42.773,39.38,38.494,31.165,30.397,26.876,23.841,20.253,16.232,13.417,12.677,15.248,16.244,13.434,10.331,10.58,9.738,10.717,11.282,10.758,10.083,17.299,6.142,19.044,7.331,8.898,14.494,17.054,16.546,13.559,13.892,12.54,16.004,20.026,18.529,20.265,23.13,27.584,28.966,31.691,36.72,40.083,41.538,42.788,42.322,43.593,44.326,46.152,46.312,47.454&chg=25,25&chls=0.75,-1,-1');
图表应该会出现。字符串之间的区别是一个字符。我将在最终版本中使用的“真正的”Google 图表 API 字符串长约 1250 个字符。
那么这是对 get_file_contents() 的限制吗?我已经将 cURL 视为替代方案,但它的细节超出了我的想象。有人可以确认字符限制,如果可能的话提出一些建议?
非常感谢,尼尔