Готовим фундамент
Первое что мы сделаем это настроим хост. Для этого создаём в корневой директории файл .htaccess (с точкой в начале) и записываем в него следующие строки:
Options -Indexes
DirectoryIndex index.php index.wml
AddType audio/midi .mid .midi
AddType text/vnd.wap.wml;charset=windows-1251 wml
AddType application/x-smaf .mmf
AddType application/vnd.wap.wmlc wmlc
AddType text/vnd.wap.wmlscript wmls
AddType application/vnd.wap.wmlscriptc wmlsc
AddType image/vnd.wap.wbmp wbmp
AddType text/vnd.sun.j2me.app-descriptor;charset=UTF-8 jad
AddType application/java-archive jar
Объясняю, что обозначает каждая из них.
- Options - Indexes - не разрешаем показ директории, если в нём отсутствует индексный файл
- DirectoryIndex index.php index.wml - задаём индексные файлы. Приоритеты идут по порядку перечисления от высшего к низшему
- AddType audio/midi .mid .midi - файлам с расширением .mid и .midi присваиваем тип MIDI
- AddType text/vnd.wap.wml;charset=windows-1251 wml - задаём кодировку windows-1251 для всех wml страниц
- AddType application/x-smaf .mmf - обычно не требуется, но на всякий случай лучше добавить
Последующие строки позволяют правильно определять файлы wml со скрипами.
- AddType image/vnd.wap.wbmp wbmp - определяем новый формат рисунков wbmp
- AddType text/vnd.sun.j2me.app-descriptor;charset=UTF-8 jad и AddType application/java-archive jar - эти 2 строчки нужны для того, чтобы правильно определялись и соответственно не было проблем с загрузкой jad и jar файлов. Чаще всего они обязательны.
Итог. С помощью .htaccess мы подготовили хост под наш будущий WAP сайт.
Первая страница + немного теории
Создадим файл index.wml с вот таким содержанием:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" "http://www.wapforum.org/DTD/wml13.dtd">
<wml>
<card id="FirstPage" title="Первая страница">
<p>WAP.SoftoRooM.NeT - твой мобильный мир без границ!</p>
</card>
</wml>
Отмечу, что язык WML (Wireless Markup Language, язык разметки для беспроводных устройств) является подвидом языка XML (eXtensible Markup Language, расширенный язык разметки). Тот, кто знаком с XML очень легко адаптируется под WML.
Рассмотрим страницу подробнее. Первый элемент - <?xml version="1.0" encoding="windows-1251"?> - это стандартная декларация XML.
Второй элемент тоже унаследован из XML - это DTD (Document Type Definition). Он нужен для автоматизированной проверки корректности WML страницы по методу DTD (например, в программе XMLSpy). <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" "http://www.wapforum.org/DTD/wml13.dtd">
Тегом <wml> мы открыли набор карт.
Тегом <card id="FirstPage" title="Первая страница"> мы задали уникальный ID карты и её заголовок.
На HTML тегах подробно не останавливаюсь, в интернете куча инфы ищите сами.
Закрываем набор карт - </card> и WML страницу - </wml>.
Полученный файл заливаем на хост. Просматриваем с мобильника или в Opera.
Кодировка
На данный момент существует несколько решений проблем с кодировкой.
- Использовать Unicode.
Достоинства: не нужно декларировать в заголовке WML, корректно отображается на всех мобильных телефонах.
Недостатки: очень большой вес страниц (один символ равен семи, пример буква А в Unicode выглядит А), сложно редактировать подобные документы, для просмотра обязательно требуются дополнительные программы.
- Использовать UTF-8.
Достоинства: значительно экономнее Unicode; родная кодировка для многих мобильников, поэтому отображается без проблем; поддерживается в некоторых программах (Lister в Total Commander), что облегчает чтение WML в отсутствие браузера.
Недостатки: опять же страницы по размеру получаются большими, для редактирования нужны спец. программы, требуется декларация в заголовке WML (encoding="UTF-8").
- Использовать koi8-r.
Достоинства: оптимальность; WML страницы легко править в редакторе Bred или в среде Linux.
Недостатки: для работы со страницами нужен спец. редактор.
- Использовать windows-1251.
Достоинства: оптимальность; максимально лёгкая разработка страниц. Страницы можно просматривать/редактировать не имея дополнительных инструментов.
Недостатки: теоретически может плохо отображаться на экранах мобильных телефонов, где нет явной поддержки windows-1251.
PHP и WAP
WAP вполне совместим с PHP. Поддерживаются основные методы: POST и GET. Рассмотрим на примере. Создаём страничку:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.3//EN" "http://www.wapforum.org/DTD/wml13.dtd">
<wml>
<card id="phpwap" title="PHP-WAP">
<input title="сообщение" name="mess"/><br/>
<anchor title="Принять">Принять
<go href="test.php" method="post">
<postfield name="mess" value="$(mess)"/>
</go>
</anchor>
</card>
</wml>
В результате получим страницу с полем ввода и ссылкой "Принять". Записав текст и нажав "Принять" мы передадим значение поля в переменную $mess и направим на обработку в скрипт test.php.
Создание скриптов здесь мы рассматривать не будем, это отдельная тема.
Как многие уже догадались WAP можно прикрутить к MySQL. Возможны различние комбинации. Формирование страниц из таблиц БД "на лету", внос записей в БД из WML форм или всё сразу