Xiプログラミング (2)

 今度はより実用的なプログラムを、ということで、 Webフォームに入力された内容を元に何か処理をする、という、CGIぽいサンプルと、 画面間で情報を共有するセッション(Session)の仕組みを少しだけ使ってみます。

Webフォームとフォーム変数の取得
まずはフォーム変数をXiで取り出す例です。

・form1.html

<html>
<body>

<form action="form1.xi" method="POST">
お名前:<input type="text" name="username" maxlength="30"><br>
メールアドレス:<input type="text" name="mailaddress" maxlength="60"><br>
<input type="submit" value="OK">
</form>

</body>
</html>

・form1.xi

<?xml version="1.0" encoding="Shift_JIS" ?>
<xi:program xmlns:xi="http://www.baykit.org/Xi/1.1">
<html><body>

<xi:variable name="username" select="$Web.parameters.username" />
<xi:variable name="mailaddress" select="$Web.parameters.mailaddress" />

こんにちは、
<xi:value-of select="$username"/>
(<xi:value-of select="$mailaddress"/>) さん。<br/>
</body></html>
</xi:program>

フォーム変数を取得するには、 $Web.parameters.{フォーム変数名} とします。

セッションの使用
 今度はさっきの画面に毛がはえて、3つの画面間で情報を共有する例です。 といっても最初の画面のWebフォームで入力した内容を2番目の画面で記憶し、 3番目の画面で読み出す、というだけのことで。

・form2.html

<html>
<body>

<form action="form2.xi" method="POST">
お名前:<input type="text" name="username" maxlength="30"><br>
メールアドレス:<input type="text" name="mailaddress" maxlength="60"><br>
<input type="submit" value="OK">
</form>

</body>
</html>

・form2.xi

<?xml version="1.0" encoding="Shift_JIS" ?>
<xi:program xmlns:xi="http://www.baykit.org/Xi/1.1">
<html><body>

<xi:variable name="username" select="$Web.parameters.username" />
<xi:variable name="mailaddress" select="$Web.parameters.mailaddress" />

こんにちは、
<xi:value-of select="$username"/>
(<xi:value-of select="$mailaddress"/>) さん。<br/>

<xi:comment>
セッションに情報を記憶して、さらに次のページに進んでもらいます。
</xi:comment>
<xi:exec select="$Web.session.put('username', $username)"/>
<xi:exec select="$Web.session.put('mailaddress', $mailaddress)"/>
<a href="form2-2.xi">こちら</a>へどうぞ。

</body></html>
</xi:program>

・form2-2.xi

<?xml version="1.0" encoding="Shift_JIS" ?>
<xi:program xmlns:xi="http://www.baykit.org/Xi/1.1">
<html><body>

<xi:comment>
セッションから情報を読み出します。
</xi:comment>
<xi:variable name="username" select="$Web.session.get('username')"/>
<xi:variable name="mailaddress" select="$Web.session.get('mailaddress')"/>

むむ。
<xi:value-of select="$username"/>
(<xi:value-of select="$mailaddress"/>) さんは今日はラッキーです。
(何が?)<br/>

</body></html>
</xi:program>

セッションに情報を記憶させるには $Web.session.putを、 セッションから情報を取り出すには、 $Web.session.getを使います。 本題とはちょっと離れますが、 xi:execタグはxi:value-ofタグとほぼ同じですが、 式で実行した結果を出力しない点が異なります。 ここでは、セッションに情報を書き込む、という処理の出力を表示する必要はありませんから、 xi:execを使っています。

Baykit and Cocoon Top

(first uploaded 2002/12/09 last updated 2002/12/22, URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル