名前は?

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

今回は名前を入力して、それを表示させる処理です。

 

※ソース内に解説コメントを書きました。

Application.cfc

<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>

index.cfm

こちらで確認できます。

 

<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>

index2.cfm(別パターン)

こちらで確認できます。

 

<!---解説
    <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>

index3.cfm(別パターン)

こちらで確認できます。

 

<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>
  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

この記事に関連する記事一覧

最近の投稿
カテゴリー
タグ
アーカイブ
プロフィール