在google maps中打开KMZ文件,但仅适用于PHP中的受信任(已验证)用户

在google maps中打开KMZ文件,但仅适用于PHP中的受信任(已验证)用户,php,google-maps,kmz,Php,Google Maps,Kmz,我知道,使用谷歌地图在浏览器中打开一个KMZ或KML文件是可能的,url如下: https://maps.google.it/maps?q=http://myserver.com/mymap.kmz 但我希望只允许经过身份验证的用户打开该kmz。 为此,我用.htaccess保护了我的kmz文件夹,我编写了一个php页面,检查用户是否登录,只有在检查通过后,它才会返回kmz文件: ... if(isset($_SESSION['trusted'])) { if(isset($_GET[

我知道,使用谷歌地图在浏览器中打开一个KMZ或KML文件是可能的,url如下:

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");
}
...
所以,现在我的url是:

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");

对KMZ文件的请求来自google,而不是用户(当您查看console->network时,您会发现对KMZ文件没有任何请求)

因此,唯一需要授权的“用户”是谷歌


意思是:这是不可能的(除非你通过KMZ-URL传递用户身份验证所需的凭据,但这当然是不安全的)

谢谢你的回答,我没有想到这一点,但你是对的:是谷歌做的请求。无论如何,你认为有没有其他方法或解决办法让谷歌地图打开我的kmz,但不让它们公开?对不起,我不知道