|
|
|
| Доброй ночи!
У меня возникла задача, определить понимает юзер-агент пользователя WAP 2.0 или нет.
В вап 2.0 агенту отправляется заголовок:
<?php header("Content-Type: application/vnd.wap.xhtml+xml; charset=utf-8"); ?>
| А в вап 1.1:
<?php header("Content-Type: text/vnd.wap.wml; charset=utf-8"); ?>
|
Вот как мне (скрипту) узнать, принял ли агент заголовок вап 2.0 и, если не принял, отправить заголовок вап 1.1?
Надеюсь это возможно??? | |
|
|
|
|
|
|
|
для: Sfinks
(26.12.2006 в 01:11)
| | Вообще порядочный клиент вам сам должен присылать HTTP-заголовки с его предпочтениями, ложиться они должны в переменную окружения $_SERVER['HTTP_ACCEPT'], правда мобильные устройства в порядочности трудно заподозрить :))) | |
|
|
|
|
|
|
|
для: cheops
(26.12.2006 в 01:30)
| | А значение */* означает что принимает любые? Но ИЕ, например, text/vnd.wap.wml не принимает, а пишет */*
Или то, что он страницу с таким заголовком сохраняет в файл, но не отображает, считается положительным результатом? | |
|
|
|
|
|
|
|
для: Sfinks
(26.12.2006 в 02:01)
| | Это означает, что браузер на свой страх и риск будет есть всё, чем вы его накормите, если он что-то не понимает, он просто отобразит его как текст text/plain. | |
|
|
|
|
|
|
|
для: cheops
(26.12.2006 в 02:27)
| | А все-таки именно принял или не принял (по факту) нельзя определить? Вот на http://www.developershome.com/wap/xhtmlmp/xhtml_mp_tutorial.asp?page=mimeTypesFileExtension написано следующее:
The following example demonstrates how to use JSP to write the code. If you use a server-side technology other than JSP, the code will be slightly different but the idea is the same.
<%
String acceptHeader = request.getHeader("accept");
if (acceptHeader.indexOf("application/vnd.wap.xhtml+xml") != -1)
response.setContentType("application/vnd.wap.xhtml+xml");
else if (acceptHeader.indexOf("application/xhtml+xml") != -1)
response.setContentType("application/xhtml+xml");
else
response.setContentType("text/html");
%>
|
Как сделать тоже самое на PHP? Я прост не шарю в JSP =(
Или этот код на $_SERVER["HTTP_ACCEPT"] и основан? | |
|
|
|
|
|
|
|
для: Sfinks
(26.12.2006 в 06:39)
| | Судя по всему да, вам просто нужно проверить содержит ли строка $_SERVER["HTTP_ACCEPT"], подстроку "application/vnd.wap.xhtml+xml" или подстроку "application/xhtml+xml", если не то и не другое не прокатывает, то считается, что браузер поддерживает формат "text/html". | |
|
|
|
|
|
|
|
для: Sfinks
(26.12.2006 в 06:39)
| | Cтранно, почему else "text/html", логичнее было бы сделать "text/vnd.wap.wml":
<?php
$accept = $_SERVER['HTTP_ACCEPT'];
if(strpos($accept, "application/vnd.wap.xhtml+xml") !== false) $type = "application/vnd.wap.xhtml+xml";
elseif(strpos($accept, "application/xhtml+xml") !== false) $type = "application/xhtml+xml";
elseif(strpos($accept, "text/html") !== false) $type = "text/html";
else $type = "text/vnd.wap.wml";
header("Content-type: ".$type."; charset=utf-8");
if($type == "text/vnd.wap.wml")
{
//WML-страница
}
else
{
//XHTML/HTML
}
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(26.12.2006 в 13:40)
| | > Cтранно, почему else "text/html", логичнее было бы сделать "text/vnd.wap.wml":
Потому что статья о форматах WAP 2.0, а не о wap2 против wap1... Т.е. Все 3 заголовка, упомянутые в этом примере - это варианты для wap 2.0 =) | |
|
|
|
|
|
|
|
для: cheops
(26.12.2006 в 01:30)
| | > правда мобильные устройства в порядочности трудно заподозрить :)))
А поисковых ботов можно в порядочности заподозрить?
Вот при таком определении:
<?php
$accept = $_SERVER["HTTP_ACCEPT"];
if((strpos($accept,"application/vnd.wap.xhtml+xml") !== false) ||
(strpos($accept,"application/xhtml+xml") !== false) ||
(strpos($accept,"text/html") !== false) ||
(strpos($accept,"*/*") !== false)) $_GET["type"] = "xhtml";
else $_GET["type"] = "wml";
?>
| поисковые боты станут индексировать страницу? На скок я знаю вмл они не индексируют =) | |
|
|
|
|
|
|
|
для: sfinks
(01.01.2007 в 20:06)
| | Почему бы нет - зайдите на свой сайт при помощи браузера (не Opera) - если он выдаёт какую-либо информацию - всё в порядке, поисковый робот её подцепит. | |
|
|
|
|
|
|
|
для: cheops
(01.01.2007 в 21:05)
| | Наверно я не правильно сформулировал вопрос. Любой другой браузер хоть как-то представляется. Например ИЕ нормально открывает. Но поисковый робот это же скрипт. А, например, скрипт пхп без особых инструкций вообще не определяет переменную $_SERVER["HTTP_ACCEPT"]. Вот я и имел ввиду, боты хотя бы */* передает или нет? | |
|
|
|
|
|
|
|
для: cheops
(01.01.2007 в 21:05)
| | Наверно я не правильно сформулировал вопрос. Любой другой браузер хоть как-то представляется. Например ИЕ нормально открывает. Но поисковый робот это же скрипт. А, например, скрипт пхп без особых инструкций вообще не определяет переменную $_SERVER["HTTP_ACCEPT"]. Вот я и имел ввиду, боты хотя бы */* передает или нет? | |
|
|
|
|
|
|
|
для: Sfinks
(02.01.2007 в 10:33)
| | >Вот я и имел ввиду, боты хотя бы */* передает или нет?
Лучше на это не рассчитывать, хотя приличные роботы должны следовать этикету протокола HTTP. | |
|
|
|