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šej stránke</i><br/><br/>
Dnes je:<br/>
<b>
<?php
$datum = date("d. m. Y");
print $datum;
?>
</b>
<br/><br/>
Pripá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 $pocitadlo = (int)fgets($otvor, 1024); echo $pocitadlo; $pocitadlo++; fseek($otvor,0); fputs($otvor, $pocitadlo); fclose($otvor);
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.");
?>
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šej stránke</i><br/><br/>
Dnes je:<br/>
<b>
<?php
$datum = date("d. m. Y");
print $datum;
?>
</b>
<br/><br/>
Ste návštevník číslo:<br/>
<b>
<? include('pocitadlo.php') ?>
</b>
<br/><br/>
Pripá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áš e-mail:<br/>
<input type="text" name="email" title="Odosielatel" value="@" /><br/>
E-mail prijímateľa:<br/>
<input type="text" name="email2" title="Prijimatel" value="@" /><br/>
Predmet:<br/>
<input type="text" name="predmet" title="Predmet" /><br/>
Správa:<br/>
<input type="text" name="sprava" title="Sprava" /><br/><br/>
<anchor>Odoslať
<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>
<?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">Ďakujeme,<br /> Váš e-mail bol odoslaný na adresu $email2.<br/><br/>
<a href="mail.php "> << Ná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ť
<go href="spracuj.php" method="post">
<postfield name="text" value="$(text)"/>
</go>
</anchor>
</p>
</card>
</wml>
<?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