0

次のような URL の Google マップを使用して、ブラウザーで KMZ または KML ファイルを開くことができることを私は知っています。

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

ただし、認証されたユーザーのみがその kmz を開くことができるようにしたいと考えています。そのために、kmz フォルダーを .htaccess で保護し、ユーザーがログインしているかどうかをチェックし、そのチェックに合格した後にのみ kmz ファイルを返す php ページをコーディングしました。

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

1 に答える 1