ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Некоторые советы и мысли о программировании для Wap
  #1  
Старый 03.11.2008, 10:40
Twoster
Reservists Of Antichat - Level 6
Регистрация: 20.08.2008
Сообщений: 328
Провел на форуме:
7144817

Репутация: 1503
По умолчанию Некоторые советы и мысли о программировании для Wap

Итак, я хочу поднять затертую до дыр тему wap’a!
Многие в этот момент пойдут юзать поиск на сайте, чтобы показать, что таких тем было много! Однако я думаю, что в это статье будет нечто другое! (это по сути даже не статья, а мини-пособие для желающих начать работать в вапе)

Я планирую описать проблемы при программировании на php под wap. И дать несколько советов (я всей душой надеюсь, что они будут полезны)

1. Две версии разметки

Новички, которые только начинают осваивать wap-программирование зачастую сталкиваются с проблемой создания своего сайта (скрипта) в двух версиях (обычно xHTML+WML). Многие делают два файла с разными разметками.
Вот пример:

xHTML-mobile Версия

PHP код:
<?php
header
("Content-type:application/vnd.wap.xhtml+xml; charset=utf-8");
print 
'<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<meta http-equiv="Content-Type" content="application/vnd.wap.xhtml+xml; charset=UTF-8" />'
;
print 
'<title>xHTML-mobile</title>';
print 
'</head><body><div>';

print 
'Текст, который нам нужно отобразить и в xHTML-mobile версии и в WML версии!<br/>';

print
'</div></body></html>';
?>
WML Версия

PHP код:
<?php
header 
("Content-type:text/vnd.wap.wml; charset=utf-8");
print 
'<?xml version="1.0" encoding="UTF-8"?>';
print 
'<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">';
print 
'<wml><head><meta http-equiv="Cache-Control" content="no-cache" forua="true"/></head>';
print 
'<card title="WML-version">';
print 
'<p align="center">';

print 
'Текст, который нам нужно отобразить и в xHTML-mobile версии и в WML версии!<br/>';

print 
'</p></card></wml>';
?>
Попробуем сделать один файл из этих двух!
Я обычно разделяю обе версии оператором условия if, либо switch, так называемым «оператором выбора». Вот пример файла:
PHP код:
<?php
switch(@$_GET['version'])
{
    case 
'wml':
        
header ("Content-type:text/vnd.wap.wml; charset=utf-8");
        print 
'<?xml version="1.0" encoding="UTF-8"?>';
        print 
'<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">';
        print 
'<wml><head><meta http-equiv="Cache-Control" content="no-cache" forua="true"/></head>';
        print 
'<card title="WML-version">';
        print 
'<p align="left">';
        print 
'<a href="?version=xhtml">xHTML-mobile Version</a><br/>';
    break;

    default:
        
header("Content-type:application/vnd.wap.xhtml+xml; charset=utf-8");
        print 
'<?xml version="1.0" encoding="utf-8"?>
        <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
        <head>
        <meta http-equiv="Content-Type" content="application/vnd.wap.xhtml+xml; charset=UTF-8" />'
;
        print 
'<title>xHTML-mobile</title>';
        print 
'</head><body><div>';
        print 
'<a href="?version=wml">WML Version</a><br/>';
    break;
}
######################## Текст страницы ########################
print 'Текст, который нам нужно отобразить и в xHTML-mobile версии и в WML версии!<br/>';
################################################################

if(@$_GET['version']==='wml')
{
    print 
'</p></card></wml>';
}
else
{
    print
'</div></body></html>';
}
?>

Этот файл уже выдает валидные страницы в зависимости от выбранной разметки!


1.1 Небольшое добавление к этому пункту!
Как известно, наш «любимый» IE не хочет признавать разметки заточенные под wap! =( Для решения этой проблемы нам нужно, чтобы IE распознал страницу как валидную ему html. Действуем! Заменим 15 строку нашего скрипта:

PHP код:
header("Content-type:application/vnd.wap.xhtml+xml; charset=utf-8"); 
на

PHP код:
if (ereg('xhtml',getenv("HTTP_ACCEPT")))
{
header("Content-type:application/vnd.wap.xhtml+xml; charset=utf-8");
}
else
{
header("Content-type:text/html; charset=utf-8");


(данный тип проверки можно сменить, при желании, например, проверять имя браузера, однако этот метод мне не нравится!)

Все готово! Дальше!



2. Сессии и WAP

Как известно многие телефоны не поддерживают прием кукисов.
(сейчас многие подумают, что последние модели телефонов поддерживают ВСЕ от mp3 до зубной щетки, однако не хочется обижать и владельцев стареньких моделей)
Поэтому сделаем так, чтобы все передавалось только через идентификатор сессии.
Создаем файл .htaccess в директории со скриптом следующего содержания:

Цитата:
php_flag session.use_cookies 0
#### Отменяет использование кукисов
php_flag session.use_trans_sid On
#### Включает передачу идентификатора сессии
Отлично, теперь все в порядке!
Теперь можно присвоить идентификатору имя и передавать его по ссылкам.
Например:

PHP код:
session_name("SID");

print '<a href="?action=view&amp;'.SID.'">Просмотр</a><br/>'
Некоторые замечания, советы и просто мысли по теме:
a) Если Вы все таки решились использовать сессии вместо ранее популярных в WAP’е методов передачи авторизационных данных GET’ом (типа index.php?id=1&pass=1234), то желательно написать функцию, которая сверяет IP-адрес и Броузер пользователя в данный момент, с этими же переменными записаными в базе при последнем вызове скрипта (т.к. идентификатор передаваемый GET'ом довольно опасен в плане перехвата)! Я написал функцию, которая сверяет юзер-агент и Айпи по первым трем разрядам маски, т.к. телефоны подключенные через GPRS обычно имеют динамические адреса.

b) Еще один момент, на который я хотел бы обратить внимание – это частое использование юзер-агента (getenv('HTTP_USER_AGENT')). В отличие от WEB в вапе юзер-агент используется практически повсюду, однако очень многие забывают его фильтровать! На это тоже стоит обратить внимание.

Конечно многие вряд ли узнают что то новое из этого, однако я надеюсь, что эта тема кому-нибудь да поможет!
Спасибо за внимание!
 
Ответить с цитированием

  #2  
Старый 03.11.2008, 13:16
satana8920
Moderator - Level 7
Регистрация: 22.09.2006
Сообщений: 531
Провел на форуме:
3818187

Репутация: 369


Отправить сообщение для satana8920 с помощью ICQ
По умолчанию

За старанья + но ты не затронул даже тему как его потом раскручивать на каких хостах размещать итд
 
Ответить с цитированием

  #3  
Старый 03.11.2008, 13:20
Twoster
Reservists Of Antichat - Level 6
Регистрация: 20.08.2008
Сообщений: 328
Провел на форуме:
7144817

Репутация: 1503
По умолчанию

satana8920, это уже тема другой статьи! В этой я планирую выкладывать только приемы и хитрости кодинга по wap, т.к. он немного различается с традиционным!
 
Ответить с цитированием

  #4  
Старый 03.11.2008, 18:52
.AkeLLa
Banned
Регистрация: 30.08.2008
Сообщений: 477
Провел на форуме:
3989114

Репутация: 718
По умолчанию

Для себя ничего нового не нашел, ты написал очень малую часть всех ньюансов которые там встречаються..
 
Ответить с цитированием

  #5  
Старый 18.12.2008, 17:27
zL0Bniy keNt
Участник форума
Регистрация: 10.09.2006
Сообщений: 121
Провел на форуме:
187205

Репутация: 9
По умолчанию

Мне не знающему,только въезжаемому в эти темы!Было очень познавательно!+ за старание!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Большой Faq для новичков Robin_Hood Статьи 3 20.06.2008 10:07
Как оптимизировать флэш для поисковиков m0s]{ SЕО - тонкости, методы раскрутки 1 09.06.2008 17:39
Обзор новшеств в FreeBSD 7.0 zythar Мировые новости 2 28.02.2008 12:43
Pci--, PCI-Express Cthulchu Аппаратное обеспечение 0 28.01.2008 23:01
ОТЛИЧНАЯ СТАТЬЯ - "Как заметать следы" foreva Чужие Статьи 8 07.02.2005 12:44



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ