我正在處理的具體問題是啓用https與Google圖表API,以及在url字符串上使用php file_get_contents時可能的字符限制。讓我帶你看看正在發生的事情。我在網上使用一些教程取得了很好的進展,特別是爲了啓用https。我使用他們的「基本方法」從本教程:使用php file_get_contents()和Google Chart API進行字符限制?
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;
?>
我打電話從我的主頁文件,通過「測試」谷歌圖表網址(我用許多不同的)給它,這是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看作另一種選擇,但它的細節超出了我的頭腦。有人可以確認字符限制,如果可能的話提出一些建議?
非常感謝, 尼爾
感謝您的快速回復。我理解這個想法,但是我無法在實踐中使用它。我使用你的代碼作爲一個例子(與網址替換),我已啓用會話,並嘗試在線和本地主機: $ _SESSION [「URL_1923843294284」] = $ chartUrl; 我有平均的PHP知識,所以我接受我可能做錯了什麼,我想這是解析api_url鍵。我已經迴應了會話變量,該變量將起作用,但字符限制問題再一次引發了醜陋的頭緒! – Neil 2010-08-31 13:33:39
@你需要在兩個腳本中使用'session_start()'來初始化會話。除此之外,它應該工作。 – 2010-08-31 13:35:34
Awww @Neil我現在才意識到,也許,傳遞給Google的最終網址已經超過了512個字節!在這種情況下,我的想法對你沒有任何好處。我道歉。在這種情況下,你可能真的不得不求助於CURL並測試它是否更寬鬆。 – 2010-08-31 13:46:42