今回は名前を入力して、それを表示させる処理です。
※ソース内に解説コメントを書きました。
<cfcomponent>
<cfset this.name = "#hash(GetDirectoryFromPath(GetCurrentTemplatePath()))#">
<!---解説
アプリケーション名を登録します。
このアプリケーション名は、
フォルダ単位でアプリケーション名を設定します。
通常であれば、
<cfset this.name = "demo">
でよいのですが、
テストなどを別フォルダにコピーして行う場合は、
上記の「demo」であれば、
同じアプリケーションが二つ存在することになります。
ColdFusionではアプリケーション名で判断しますので、
session変数などが共有されてしまいます。
今回の設定であれば、フォルダごとコピーしても
アプリケーション名は違うものとなるので、
session変数など共有することはありません。
なにやら難しそうな設定ですが、簡単な関数の説明です。
●GetCurrentTemplatePath
この関数を呼び出すページのパスを取得
例)d:\tmpフォルダにある場合は、「d:\tmp\Application.cfm」
●GetDirectoryFromPath
絶対パスからディレクトリを抽出
例)「d:\tmp\Application.cfm」は、「d:\tmp\」
●hash
なんらかの唯一の数値などに変換
おもにセキュリティ関係に使われ
パスワード管理でもhashの値で管理して
元のパスワードはデータとして保持しない使い方もある。
hashで変換されたものを元にしたパスワード解析は
ほぼ不可能
--->
</cfcomponent>
こちらで確認できます。
<cfset title="フォーム入力テスト">
<!---解説
変数titleに値をセットします。
--->
<html>
<head>
<title><cfoutput>#title#</cfoutput></title>
<!---解説
変数titleを表示します。
--->
</head>
<body>
■<cfoutput>#title#</cfoutput><br><br>
<cfif IsDefined("form.my_name")>
<!---解説
条件文をcfifで書きます。ここでは、
「form.my_name変数が存在する場合は?」
となります。最初はform.my_name変数が存在しないので、
「あなたのお名前は、。。。」は、表示されません。
IsDefined関数は変数が存在するかを調べる関数です。
form.my_name変数はformからきた変数という意味です。
--->
<cfoutput>
あなたのお名前は、「#form.my_name#」さんですね。<br><br>
</cfoutput>
</cfif>
<form action="index.cfm" method="post">
<!---解説
よく使うHTMLの入力フォームです。
actionで自分自身のプログラムを呼んでいます。
--->
あなたのお名前を入力してください<br>
<input type="text" name="my_name"><br>
<input type="Submit" value="実行">
</form>
</body>
</html>
こちらで確認できます。
<!---解説
<cfoutput>をプログラムの最初と最後に書いたものです。
index.cfmの場合は、表示する変数の前後に書いていましたが、
こちらのほうがわかりやすいです。
--->
<cfoutput>
<cfset title="フォーム入力テスト">
<html>
<head>
<title>#title#</title>
</head>
<body>
■#title#<br><br>
<cfif StructKeyExists(form, "my_name")>
<!---解説
「フォーム変数構造体にmy_nameというキーがあった場合」です。
index.cfmに書いたisDefinedはちょっと冗長で、
form.my_nameがなくても、variables.form.my_nameを探索して、
それがあってもOKとなります。
formという名前の構造体を作ることはほとんどないと思いますが
注意が必要です。
処理としてはStructKeyExistsがよいと思います。
--->
あなたのお名前は、「#form.my_name#」さんですね。<br><br>
</cfif>
<form action="index2.cfm" method="post">
あなたのお名前を入力してください<br>
<input type="text" name="my_name"><br>
<input type="Submit" value="実行">
</form>
</body>
</html>
</cfoutput>
こちらで確認できます。
<cfparam name="form.my_name" default="">
<!---解説
form.my_name変数が存在しない場合、ヌル(空データ)をセットします。
個人的には、よく使っている方法です。
--->
<cfset title="フォーム入力テスト">
<cfoutput>
<html>
<head>
<title>#title#</title>
</head>
<body>
■#title#<br><br>
<cfif form.my_name neq "">
<!---解説
「form.my_nameの値がヌルでない場合」
index.cfm,index2.cfmは変数がある場合に表示されるので、
ヌルであっても変数があれば表示されます。
それに対してindex3.cfmの場合は、
値がある場合に表示することとなります。
--->
あなたのお名前は、「#form.my_name#」さんですね。<br><br>
</cfif>
<form action="index3.cfm" method="post">
あなたのお名前を入力してください<br>
<input type="text" name="my_name"><br>
<input type="Submit" value="実行">
</form>
</body>
</html>
</cfoutput>