今回は名前を入力して、それを表示させる処理です。
※ソース内に解説コメントを書きました。
<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>