今度はより実用的なプログラムを、ということで、
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を使っています。
(first uploaded 2002/12/09 last updated 2002/12/22, URANO398)
|