在谷歌地图中打开KMZ文件,但仅适用于PHP中的受信任(经过身份验证的)用户

时间:2014-05-09 08:15:50

标签: php google-maps kmz

我知道可以在浏览器中使用谷歌地图打开一个KMZ或KML文件,其中包含以下网址:

https://maps.google.it/maps?q=http://myserver.com/mymap.kmz

但我想让只有经过身份验证的用户打开该kmz。 为此,我使用.htaccess保护我的kmz文件夹,我编写了一个检查用户是否已登录的php页面,只有在检查完成后才会返回kmz文件:

...
if(isset($_SESSION['trusted'])) {
    if(isset($_GET['map']) && $_GET['map']!="") {
        $map = $_GET['map'];
        readfile("./kmz/$map");
}
...

所以,现在我的网址是:

https://maps.google.it/maps?q=http://myserver.com/requestkmz.php?map=mymap.kmz

问题似乎是php使用readfile返回的文件与文件系统中的原始文件不同。我是否需要设置标题或指定编码?


更新

我已经在php文件中添加了一个标题,但我得到了相同的结果:生成的KMZ无效,原始版本也是如此。这是在readfile行之前添加的标题:

header("Cache-Control: no-cache, no-store, must-revalidate"); 
header('Content-Type: application/vnd.google-earth.kmz');
header("Content-Disposition: inline");
header("Content-Description: KMZ data intended for Google Earth");

1 个答案:

答案 0 :(得分:1)

对KMZ文件的请求来自谷歌,而不是来自用户(当您查看控制台 - >网络时,您会看到没有任何对KMZ文件的请求)。

所以唯一"用户"需要获得授权的是google。

意味着:它是不可能的(除了你传递通过KMZ-URL验证用户所需的凭证,但这当然是不安全的)