php文件_get_contents()和Google图表API的字符限制?

php文件_get_contents()和Google图表API的字符限制?,php,limit,character,google-visualization,file-get-contents,Php,Limit,Character,Google Visualization,File Get Contents,我正在研究的具体问题是使用GoogleCharts API启用https,以及在url字符串上使用php文件内容时可能存在的字符限制。让我告诉你发生了什么事。我在网上使用了一些教程,特别是启用https,取得了很好的进展。我正在使用本教程中的“基本方法”: 我有一个chart.php文件,其中包含以下代码: <?php $url = urldecode($_GET['api_url']); $image_contents = file_get_contents($url); echo

我正在研究的具体问题是使用GoogleCharts API启用https,以及在url字符串上使用php文件内容时可能存在的字符限制。让我告诉你发生了什么事。我在网上使用了一些教程,特别是启用https,取得了很好的进展。我正在使用本教程中的“基本方法”:

我有一个chart.php文件,其中包含以下代码:

<?php

$url = urldecode($_GET['api_url']);

$image_contents = file_get_contents($url);
echo $image_contents;
exit;
?>
要在主页中显示图像,我使用以下代码:

<img src="https://mysite.com/chart.php?api_url=<?php echo $chartUrl; ?>" />
图表应该显示出来。字符串之间的差异为一个字符。我将在最终版本中使用的“真实”GoogleChartAPI字符串长度约为1250个字符

这是对get_file_contents()的限制吗?我曾将cURL作为一种替代方案,但它的细节让我难以理解。是否有人可以确认字符限制,如果可能,提出一些建议

非常感谢,, 尼尔

编辑:与我在下面所说的不同,这可能不是服务器问题:Apache对GET字符串的限制据说是。不过,我建议的解决方法仍然有效,因此我将保留这个答案

这是一个需要放入GET字符串中的大量数据,可能是服务器端的限制(Apache处理请求)和客户端的限制(发送请求的文件\ GET\内容)

我会寻找另一种方法,例如,使用随机键将长URL存储在会话变量中:

$_SESSION["URL_1923843294284"] = $loooooong_url;
并在URL中传递该随机键:

<img src="https://mysite.com/chart.php?api_url=1923843294284" />

更新:根据的
file\u get\u contents()
似乎没有本机长度限制。这很可能是服务器问题

编辑:与我在下面所说的不同,这可能不是服务器问题:Apache对GET字符串的限制据说是。不过,我建议的解决方法仍然有效,因此我将保留这个答案

这是一个需要放入GET字符串中的大量数据,可能是服务器端的限制(Apache处理请求)和客户端的限制(发送请求的文件\ GET\内容)

我会寻找另一种方法,例如,使用随机键将长URL存储在会话变量中:

$_SESSION["URL_1923843294284"] = $loooooong_url;
并在URL中传递该随机键:

<img src="https://mysite.com/chart.php?api_url=1923843294284" />


更新:根据的
file\u get\u contents()
似乎没有本机长度限制。这很可能是服务器问题

谢谢你的快速回复。我理解这个想法,但我无法使它在实践中发挥作用。我以您的代码为例(替换了URL),我启用了会话并尝试了联机和本地主机:$_会话[“URL_1923843294284”]=$chartUrl;我有普通的PHP知识,所以我承认我可能做错了什么,我猜这与解析api_url键有关。我重复了session变量,它会起作用,但char limit问题再次引起了它的关注@Neil您需要在两个脚本中使用
session\u start()
初始化会话。除此之外,它应该是有效的。Awww@Neil我现在才意识到,也许,你传递给谷歌的最终URL已经超过512字节长了!那样的话,我的主意对你没有任何好处。我道歉。在这种情况下,你可能真的不得不求助于卷发,并测试它是否更宽松。谢谢你的快速反应。我理解这个想法,但我无法使它在实践中发挥作用。我以您的代码为例(替换了URL),我启用了会话并尝试了联机和本地主机:$_会话[“URL_1923843294284”]=$chartUrl;我有普通的PHP知识,所以我承认我可能做错了什么,我猜这与解析api_url键有关。我重复了session变量,它会起作用,但char limit问题再次引起了它的关注@Neil您需要在两个脚本中使用
session\u start()
初始化会话。除此之外,它应该是有效的。Awww@Neil我现在才意识到,也许,你传递给谷歌的最终URL已经超过512字节长了!那样的话,我的主意对你没有任何好处。我道歉。在这种情况下,你可能真的不得不求助于卷曲,并测试它是否更宽松。