2013-12-17 5 views
1

Я разрабатываю веб-сайт и версию приложения для мобильных устройств (iPhone/iPad, Android).
Веб-сайт и мобильное приложение имеют доступ к тем же URL-адресам. например http://xxx.xxx.xxx/register.php
Итак, как вы знаете, в мобильных приложениях нет концепции SESSION для PHP.
Итак, мне нужно различать, что запрашивает веб-браузер или приложение, запрашивающее мобильное устройство, на любом запросе по одному URL-адресу.
ПРИМЕЧАНИЕ !!!! Это не проблема отличия мобильного веб-браузера с использованием свойства USER AGENT
Как я могу отличить запрос от запроса от браузера (ПК/мобильный браузер)? или из мобильного приложения?
Кроме того, я надеюсь не использовать переменную $ _GET [] для этой проблемы при запросе.
Пожалуйста, помогите мне.

Сердечные приветыКак можно отличить запрос по HTTP от веб-браузера или мобильного устройства (приложения) в PHP?

+1

Получите пользовательский агент. –

+0

Уважаемый, Спасибо, конечно, я могу использовать свойство USER AGENT, но это значение для мобильного браузера и браузера ПК.i.e. для всего веб-браузера. Но мне нужно отличить браузер или мобильное приложение. – engel0088

+0

позволяют мобильному приложению делать запрос 'post', в то время как браузеры делают запрос' get' для данных –

ответ

1

Вы можете использовать строку агента пользователя, чтобы различать между различными браузерами и приложениями. В PHP вы можете получить его через $_SERVER['HTTP_USER_AGENT'].

+0

Уважаемый, Спасибо, конечно, я могу использовать свойство USER AGENT, но это значение для мобильного браузера и браузера ПК.i.e. для всего веб-браузера. Но мне нужно отличить браузер или мобильное приложение. – engel0088

+0

Неправда. Пользовательский агент __not__ ограничен браузерами. Это просто HTTP-заголовок, поэтому приложение __any__ может отправить его. Для приложений iOS HTTP-запросы, созданные с использованием 'NSURLRequest', имеют строку пользовательского агента. По умолчанию это выглядит примерно так: '/ CFNetwork/609.1.4 Darwin/12.4.0' Вы даже можете изменить его, если хотите. – neilco

+0

Действительно? то вы могли бы отличить .. Мне нужно только ananlyze браузер или мобильные приложения? – engel0088

0

Думаю, что здесь у вас тут несколько вещей не так. Сессии - это просто артефакт, основанный на кукисах, но вместо отправки необработанных данных клиенту PHP в файл cookie PHP просто отправляет идентификатор.

Вы можете настроить PHP для обработки сеансов с помощью GET, но вашему приложению придется это обработать. И вы могли бы предоставить различные конечные точки для мобильного приложения и обычного пользователя. Вы также можете (в большинстве сред) установить пользовательский агент на то, что может обрабатывать ваше приложение PHP.

В любом случае, если вы не используете COOKIES (или сеансы в этом случае) в своем мобильном приложении, вам придется использовать либо пользовательские заголовки, либо GET, либо POST.

+0

Уважаемый, Спасибо, конечно, я могу использовать свойство USER AGENT, но это значение для мобильного браузера и браузера ПК.i.e. для всего веб-браузера. Но мне нужно отличить браузер или мобильное приложение. – engel0088

+0

Но вы можете установить агент пользователя, например «myappuseragent», который будет идентифицировать ваше приложение против других браузеров. Но для идентификации пользователя в вашем приложении вы должны использовать сеансы/токены над файлами cookie или GET. –

0

Вы идете по этому пути неправильно. Существуют как мобильные браузеры, так и do сеансы поддержки, а также настольные браузеры с отключенными сеансами. Чтобы обнаружить мобильный браузер, единственным способом было бы использовать строку пользовательского агента, однако это можно легко изменить. Лучшим решением было бы фактически определить, включены ли сеансы. Вы можете сделать это с помощью JavaScript. В вашей основной PHP скрипт запуска сеанса и установить какой-то переменной:

session_start(); 
$_SESSION['var'] = "test"; 

И тогда вы можете отправить запрос AJAX, чтобы посмотреть, действительно ли это началось или нет. Вот пример JQuery:

var session_check = $.ajax({ 
    url: "/ajax-check-session.php", 
    type: "get" 
}); 

var sessions = true; 
session_check.done(function (session_response, textStatus, jqXHR){ 
    if (session_response != "enabled") { 
     sessions = false; 
    } 

    if (sessions == false) { 
     // sessions are disabled 
    } 
    else { 
     // sessions are enabled 
    } 
}); 

И Аякса-чек-session.php:

session_start(); 
if (count($_SESSION) == 0) { 
    echo "Sessions are disabled"; 
} 
echo "enabled"; 

Однако имейте в виду, что, вероятно, высокий процент людей, которые намеренно инвалидов сеансы также намеренно отключены JavaScript , Если вы решите сделать JS необходимым (обычно это плохая идея), вы можете справиться с этим, используя тег <noscript>, сообщая людям, что им нужно JS для использования вашего сайта, а затем, когда они активируют JS, вы можете обрабатывать отключенные сеансы.

+0

Уважаемый, Спасибо, конечно, я могу использовать свойство USER AGENT, но это значение для мобильного браузера и браузера ПК.i.e. для всего веб-браузера. Но мне нужно отличить браузер или мобильное приложение. – engel0088

+0

Почему вы хотите обнаружить мобильный или рабочий стол? Вы сказали, что это потому, что мобильные браузеры не поддерживают сеансовые куки, но я сказал вам, что это неверное предположение. – Mike

+0

Я сказал: в мобильных приложениях нет концепции СЕССИИ для PHP.i.e. это [приложения], а не [браузер] – engel0088

Смежные вопросы