[WML][PHP] Jak przesłać dane z pól tekstowych do innych stron?

0x01 graphic

Chcesz wypełnić pola tekstowe i przesłać je do innej strony, aby tam z nich skorzystać.

0x01 graphic

W języku WML możesz korzystać ze skryptów WMLS, ale przecież znacznie łatwiej jest odebrać dane z formularza PHP, gdzie można poddać je dowolnej obróbce.

Stwórzmy prosty formularz w WML, gdzie użytkownik będzie mógł wpisać swoje imię i wiek, a na podstawie tych danych na następnej stronie WAP powitamy go po imieniu i napiszmy, w którym roku się urodził. Zrobimy to aż na trzy sposoby...

Oto kod strony index.wml w pierwszej wersji:

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="k1" title="formularz">

<do type="accept" label="Wyslij">

<go href="odbierz.php" method="get">

<postfield name="imie" value="$(imie)"/>

<postfield name="wiek" value="$(wiek)"/>

</go>

</do>

<p>

Napisz o sobie:<br/>

imie: <input type="text" name="imie"/><br/>

wiek: <input type="text" name="wiek" format="*N"/>

</p>

</card>

</wml>

Tworzymy tutaj dwa pola tekstowe. W jednym można wpisać imię (dowolne znaki), a w drugim tylko liczby - dlatego ma dodatkowe pole formatowania (*N oznacza dowolną ilość cyfr). Po wypełniniu danych zostaną one przesłane do skryptu odbierz.php metodą GET po dojechaniu do końca strony i naciśnięciu guzika nawigacyjnego.

Inny sposób wysyłania danych to jawne dodanie zmiennych do adresu:

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="k1" title="formularz">

<do type="accept" label="Wyslij">

<go href="odbierz.php?imie=$(imie)&amp;wiek=$(wiek)"/>

</do>

<p>

Napisz o sobie:<br/>

imie: <input type="text" name="imie"/><br/>

wiek: <input type="text" name="wiek" format="*N"/>

</p>

</card>

</wml>

A oto trzeci sposób, gdzie dane zostaną wysłane po naciśnięciu odnośnika, który spełnia rolę guzika submit w formularzach HTML:

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="k1" title="formularz"><p>

Napisz o sobie:<br/>

imie: <input type="text" name="imie"/><br/>

wiek: <input type="text" name="wiek" format="*N"/><br/>

<anchor>Wyslij

<go href="odbierz.php" method="get">

<postfield name="imie" value="$(imie)"/>

<postfield name="wiek" value="$(wiek)"/>

</go>

</anchor>

</p></card>

</wml>

Dane (niezależnie od opisanych sposobów) przekazane zostaną do skryptu odbierz.php metodą GET:

<?

header("Content-type: text/vnd.wap.wml");

echo '<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">';

?>

<wml>

<card id="k1" title="info"><p>

<?

$imie = ($_GET["imie"]<>"")?$_GET["imie"]:"anonim";

$wiek = ($_GET["wiek"]<>"")?$_GET["wiek"]:0;

echo "Witaj $imie<br/>";

echo "Rok urodzenia: ".(date("Y")-$wiek);

?>

</p></card>

</wml>

A tutaj po staremu - odczytujemy pola, jeżeli są puste nadajemy własne wartości, czyli "anonim" dla imienia i zero dla wieku. Następnie wypisujemy imię i obliczamy rok urodzenia odejmując od aktualnego roku podaną liczbę lat.