Клуб API Карт

копирайт блин.

Пост в архиве.

Здравствуйте Уважаемые участники клуба. Пока писал одному из участников зарегистрировался в клубе.  Вопрос у меня такой, не подскажете как сделать так чтоб var ml = new YMaps.YMapsML('УРЛ'); не показывался при просмотре HTML, или еще какие либо варианты чтоб файл с данными не скачали и не прочитали по прямому запросу, пробовал на пхп выставлять атрибуты файла но скрипт работает быстрее чем успевает прочитаться xml файл, очень прошу помочь чем сможете. Как все заработает покажу обязательно что в результате получилось)))).

10 комментариев
Вы можете поставить фильтр по хедарам и разрешать доступ к документу только парсеру ymapsml.
Скорее всего нужно будет ориентироваться на user-agent.

Однако, это не даст 100% защиты.
Башкин Игорь Александрович
28 января 2016, 08:16

Мдаа.. (а вы сейчас с кем разговаривали?)))), у тебя не только фотка от чеширского кота, но и сленг походу тоже,)) с трудом разобрал и то не все, но принцип понятен, буду рыть в том направлении, Сенкс огромный.

На самом деле не так все сложно)

1. Создаете простенький php-скрипт, который будет записывать в некоторый файл хедеры с помощью функции get_headers().
2. Пытается добавить этот скрипт в виде ymapsml-документа на карту.
map.addOverlay(new YMaps.YMapsML("путь до скрипта"));
3. После этого анализируем хедеры, которые были записаны в файл.
4. Находим уникальные для парсера хедеры.
5. Пишем php-скрипт, который будет отдавать YMapsML-документ только в том случае, если пришли хедеры от парсера.
Башкин Игорь Александрович
28 января 2016, 08:16

Непонятно пункт 5, получается проверил и если все хорошо то еще раз написал map.addOverlay(new YMaps.YMapsML("путь уже к xml")) ?? или можно как-то по другому отдать документ?

Можете сделать следующим образом.
Если по хедерам видно, что пришел ymapsml-парсер, то Ваш скрипт отдает xml-документ с данными, а если нет - то отдавайте пустой документ.

Еще раз писать "map.addOverlay" не нужно. В пункте 2 Вы добавляете YMapsML-документ на карту, парсер YMapsML будет считывать документ по адресу "путь до скрипта", по этому адресу находится Ваш скрипт, который отдает документ с данными только после успешной проверки хедеров.
Башкин Игорь Александрович
28 января 2016, 08:16

Да Александр спасибо в голове все сложилось, только скрипт не отдает файл???? или ему не нравится file_get_contents ???

Почему скрипт не отдает файл - не могу сказать. Но могу предположить, что проблема в правах, выставленных на файл. Необходимо разрешить чтение этого файла для сервера apache, т. е. скорее всего нужно выполнить просто эту команду в консоли:
chmod 444
Башкин Игорь Александрович
28 января 2016, 08:16

Ясно, буду смотреть, а вообще теоретически скрипт print(file_get_contents("ogr.xml"));
будет работать? его достаточно?

Должен работать. 
Башкин Игорь Александрович
28 января 2016, 08:16

попробовал так print ('var ml = new YMaps.YMapsML(\'**********/map/check.php\');');
check.php= if все хорошо то print(file_get_contents("ogr.xml"));
на выходе только карта без информации
Что делать?!?!?
Чернышевского не предлагать)))