Обнаружение поддержки геолокации HTML5 с помощью PHP - PullRequest
4 голосов
/ 30 ноября 2010

Мне нужно обнаружить поддержку геолокации HTML5 с помощью PHP, чтобы я мог загрузить резервную копию JavaScript, поддерживающего геолокацию, с использованием IP-адреса.

Как это сделать с PHP или без.

Ответы [ 5 ]

7 голосов
/ 30 ноября 2010

Рассматривали ли вы использование Modernizr для обнаружения поддержки HTML5?Это не специфично для PHP, поскольку сделано в JavaScript, но вы можете использовать этот фрагмент для загрузки файла резервной копии:

if (Modernizr.geolocation){
   // Access using HTML5
   navigator.geolocation.getCurrentPosition(function(position) { ... });
}else{
   // Load backup file
   var script = document.createElement('script');
   script.src = '/path/to/your/script.js';
   script.type = 'text/javascript';
   var head = document.getElementsByTagName("head")[0];
   head.appendChild(script);
}

(на основе http://www.modernizr.com/docs/#geolocation)

1 голос
/ 30 ноября 2010
0 голосов
/ 16 июня 2016

Вы можете использовать скрипт canisuse.js , чтобы определить, поддерживает ли ваш браузер геолокацию или нет

caniuse.geolocation()
0 голосов
/ 30 ноября 2010

Ну, единственный способ обнаружить геолокацию - использовать навигатор, и использовать его так:

if(navigator.geolocation)
{
     //Geo in Browser
}

Итак, я бы лично создал Ajax-запрос к серверу и выполнил перенаправление следующим образом:

if(navigator.geolocation)
{
    navigator.geolocation.getCurrentPosition(function(position){
        /*
            * Send Position to server where you can store it in Session 
         */
        document.location = '/'; //Redirect and use the session data from above
    }, function(message){
        /*
            * Send false to the server, and then refresh to remove the js geo check.
         */
    });
}

на стороне сервера вы бы сделали что-то вроде этого:

<?php /* session/geolocation.php */

//Require system files
include '../MasterBootloader.php';

/*
    * Session is already started in the above inclustion
*/

if(!isset($_SESSION['geo']['checked']) && is_agax_request())
{
    $_SESSION['geo'] = array();
    if(isset($_GET['postition']))
    {
        $_SESSION['geo']['supported'] = true;
        $_SESSION['geo']['location'] = json_decode($_REQUEST['geo_position']);
    }
    $_SESSION['geo']['checked'] = true;
}
?>

теперь, когда javascript перенаправляет вас, в вашем индексе вы можете проверить, существует ли существующий, прежде чем выводить html, тогда вы узнаете на стороне сервера, поддерживается ли GEO!

0 голосов
/ 30 ноября 2010

Вы можете проверить поддержку геолокации, используя javascript:

function supports_geolocation() { 
     return !!navigator.geolocation; 
}

Я взял функцию из красивого Погружения в HTML 5 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...