Tvoríme WAP/WML stránky – III. časť

Jaroslav Pitoňák  /  02. 05. 2006, 00:00

WAPové stránky nemusia byť len statická záležitosť, ale v spolupráci so skriptovacím jazykom si môžeme vytvoriť dynamické aplikácie, ako napr. Chat, diskusie ... Názorné príklady dynamických WAP aplikácii vytvorených pomocou PHP si ukážeme v tejto časti seriálu.

PHP a WML
Podobne ako HTML, aj WML dokumenty sú statické. PHP vám umožní WML dokumenty generovať aktívne a vytvárať tak dynamické WAP aplikácie . PHP (Personal Home Page Tools) je skriptovací jazyk vykonávaný na strane servera a  vkladaný do HTML/WML kódu. Tento článok je určení pre čitateľov, ktorí majú aspoň základné znalosti o tomto jazyku, pre tých ktorí len s PHP začínajú je určená sekcia v kategórii Programovanie.


Hlavička
Pri generovaní WML dokumentov musíme pamätať na to, že WML používa iný MIME type (text/vnd.wap.wml)  ako HTML (text/html). Pomocou funkcie header() potlačíme tento MIME-type, a to zaslaním správneho (wml) MIME-type. Ďalší problém je deklarácia  XML. Na väčšine serverov je povolený skrátený zápis ohraničenia kódu PHP. Deklarácia XML je ohraničená rovnakými značkami. Preto musíme deklaráciu XML vypisovať pomocou funkcie echo().


Ukážka hlavičky v PHP:
<?php
header("Content-type: text/vnd.wap.wml");
echo("<?xml version="1.0"?>");
echo("<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN""
   . "http://www.wapforum.org/DTD/wml_1.1.xml">");
?>

Na následujúcom príklade si ukážeme ako vyzerá WML stránka vygenerovaná pomocou PHP. Použijeme pritom funkciu PHP date() na zistenie aktuálneho dátumu a zistíme si cez aké zariadenie sa návštevník pripája:

<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="iso-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<wml>
<card id="uvod" title="Inet.sk">
<p align="center">
<i>Vitajte na na&#x0161;ej str&#xE1;nke</i><br/><br/>
Dnes je:<br/>
<b>
<?php
   $datum = date("d. m. Y");
   print $datum;
 ?>
</b>
<br/><br/>
Prip&#xE1;jate sa cez:<br/>
<small>
<?php print $HTTP_USER_AGENT; ?>
</small>
</p>
</card>
</wml>

 Následne si súbor uložíme ako napr. index.php

Počítadlo pre WAP stránku
V nasledujúcom príklade si vytvoríme jednoduché textové počítadlo a zapracujeme ho do predchádzajúcej stránky. Najskôr si vytvoríme súbor pocitadlo.txt kde sa bude ukladať stav počítadla. Následne si vytvoríme súbor pocitadlo.php:

<?php 
$subor = "pocitadlo.txt";
$otvor = fopen($subor,"r+") or die("Nemozem otvorit pocitadlo.txt. <br /><br />Skontrolujte prava.");

$pocitadlo = (int)fgets($otvor, 1024);

echo $pocitadlo;

$pocitadlo++;

fseek($otvor,0);

fputs($otvor, $pocitadlo);

fclose($otvor);
?>

 Do predchádzajúcej stránky si počítadlo vložíme pomocou funkcie include():

<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="iso-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<wml>
<card id="uvod" title="Inet.sk">
<p align="center">
<i>Vitajte na na&#x0161;ej str&#xE1;nke</i><br/><br/>
Dnes je:<br/>
<b>
<?php
   $datum = date("d. m. Y");
   print $datum;
 ?>
</b>
<br/><br/>
Ste n&#xE1;v&#x0161;tevn&#xED;k &#x010D;&#xED;slo:<br/>
<b>
<? include('pocitadlo.php') ?>
</b>
<br/><br/>

Prip&#xE1;jate sa cez:<br/>
<small>
<?php print $HTTP_USER_AGENT; ?>
</small>
</p>
</card>
</wml>

Následne si do súboru pocitadlo.txt zapíšeme počiatočnú hodnotu, napr. 1 a všetky súbory umiestnime na server.  Na súbor pocitadlo.txt musíme nastaviť práva pre zápis CHMOD 777.

Odosielanie e-mailov cez WAP stránky
Teraz využijeme základné vedomosti o PHP a WML na tvorbu aplikácie, pomocou ktorej budeme môcť posielať cez mobilný telefón elektronické správy. Vytvoríme si dva súbory. Prvý mail.php, kde sa bude nachádzať formulár a druhý posli.php, ktorý spracuje údaje z formulára a zašle e-mail na danú adresu.

Zdrojový kód mail.php:

<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="iso-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<wml>
<card id="mail" title="E-Mail">
<p align="center">
V&#xE1;&#x0161; e-mail:<br/>
<input type="text" name="email" title="Odosielatel" value="@" /><br/>
E-mail prij&#xED;mate&#x013E;a:<br/>
<input type="text" name="email2" title="Prijimatel" value="@" /><br/>
Predmet:<br/>
<input type="text" name="predmet" title="Predmet" /><br/>
Spr&#xE1;va:<br/>
<input type="text" name="sprava" title="Sprava" /><br/><br/>
<anchor>Odosla&#x0165;
<go href="posli.php" method="post">
<postfield name="email" value="$(email)"/>
<postfield name="email2" value="$(email2)"/>
<postfield name="predmet" value="$(predmet)"/>
<postfield name="sprava" value="$(sprava)"/>
</go>
</anchor>
</p>
</card>
</wml>

Zdrojový kód posli.php:

<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="iso-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<wml>
<card id="send" title="Odoslanie">
<?php
$msg .= "$spravan";
$subject = "$predmetn";
$to = "$email2";
$mailheaders = "From: $email<$email> n";
$mailheaders .= "Reply-To: $email<$email>nn";
 mail($to, $subject, $msg, $mailheaders);

print("<p align="center">&#x010E;akujeme,<br /> V&#xE1;&#x0161; e-mail bol odoslan&#xFD; na adresu $email2.<br/><br/> 
  <a href="mail.php "> &lt;&lt; N&#xE1;vrat</a></p>");
 
?>
</card>
</wml>

Diakritika pomocou PHP
Diakritiku na WML stránkach sme síce rozoberali v predchádzajúcej časti seriálu, ale ako spracovať diakritické znaky ktoré zadá návštevník stránky do formulárového poľa? Vytvoríme si na to v PHP funkciu, ktorá nám spracuje diakritické znamienka do UTF-8 entít. Vyvoríme si tri súbory: funkcia.php, formular.php a spracuj.php

Súbor funkcia.php obsahuje funkciu na spracovanie diakritických znamieno, ale kedže je dosť rozsiahla, môžete si ju stiahnuť spolu s ostatnými stránkami z tejto časti seriálu o tvorbe WAP stránok pod týmto odkazom (3,70 Kb).

Zdrojový kód formular.php:

<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="iso-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<wml>
<card id="diakritika" title="Formular">
<p align="center">
Text:<br/>
<input type="text" name="text" title="Text" /><br/>
<br/>
<anchor> Spracova&#x0165;
<go href="spracuj.php" method="post">
<postfield name="text" value="$(text)"/>
</go>
</anchor>
</p>
</card>
</wml>

Zdrojový kód spracuj.php:

<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version="1.0" encoding="iso-8859-2"?>n";
echo "<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">n";
?>
<? include('funkcia.php') ?>
<wml>
<card id="work" title="Spracuj">
<p align="center">
Spracovany text:<br/>
<?php
$text2= unicode("$text");
print "$text2";
?>
</p>
</card>
</wml>

Následne stránky uložíme na server a cez mobilný telefón spustíme stránku formular.php kde môžme zadať text s diakritikou.

Nabudúce

V štvrtej časti seriálu si rozšírime generovanie WML stránok pomocou skriptovacieho jazyka PHP o prácu s databázou MySQL.

Jaroslav Pitoňák

Neprehliadnite: