ColdFusionカフェテリア
SAMURAIZ

 

←前 | ↑一覧 |

プログラムで別のページに遷移させる

Webアプリケーションをプログラミングしていると、さまざまなタイミングで強制的に別のページに遷移させたい場面に遭遇します。

 

例えば、

  • フォームのSUBMIT先やURL変数の送信先のページにユーザーが直接リクエストしてきたので、入力ページ、またはリンク元ページに強制的に移動させたい。
  • サーバー側のデータベース処理が終わった後、強制的に一覧ページに戻したい。
  • ログイン処理やログアウト処理を行い次第、特定のページに強制的に切り替えたい。
  • ユーザーが送信してきた値が不足していたので、用意したエラーページに強制的に切り替えたい。

ColdFusionには<cflocation>タグが用意されています。このタグを使用すると、タグを記述した箇所でColdFusionの処理が停止し、指定したURLに移動するために、ブラウザに応答コード30xを戻し、リダイレクト(遷移)させることができます。

シンタックス

<cflocation url="ブラウザ側で強制的に移動させたいURL">

コーディング例

下記の例は、データベースにデータを挿入(INSERT)するページの例です。ここでは2か所で<cflocation>タグが使われています。一つは、Form変数が存在するかをチェックして、Form変数が存在していないときに強制的に入力ページに戻す処理、そしてもう一つはデータベースへの登録処理が終わった後に、強制的に作品一覧ページに移動する処理です。

<cfif Not IsDefined("Form.SUBMIT")>
<!---フォームをサブミットせず直接SUBMIT先ページをリクエストしてきたので、
   強制的に入力ページに移動させる --->
  <cflocation url="art_regist.cfm" addtoken="false">
</cfif>

<!---データベースに新しい作成を追加(INSERT)する --->
<cfquery datasource="cfartgallery" name="qArt">
  INSERT INTO ART (.....) VALUES (......) 
</cfquery>

<!---処理が終わったら、一覧ページに移動させる --->
<cflocation url="art_location.cfm" addtoken="false">


<cflocation>タグの処理が実行されると、ページの処理はその時点で中断し、リクエスト元のブラウザに応答コード30xで戻します。30xはリダイレクションを意味し、ブラウザはその応答コードを受け取ると、指定されたURLにリダイレクト(遷移)します。応答コードは、<cflocation>タグの statusCode 属性でセットできます。応答コードの詳細については、下記のwikipedia記事などを参照下さい。
(参考: HTTPステータスコードのwikipedia記事

補足事項

デフォルトの状態で<cflocation>タグを使用すると、指定した遷移先ページに移動した後に、URLの後ろにColdFusionのセッション情報が付加される場合があります。 これは、<cflocation>タグが実行されたページが、セッションが有効なColdFusionアプリケーション内に置かれている時に発生します。

 

例) http://127.0.0.1:8500/art_regist.cfm?CFID=4600&CFTOKEN=dd3fe92e894946bc-72B585EE-8C73-6E7B-1862F124627B7C2A

 

ColdFusionは、セッション機能の管理にブラウザのCookieを利用しますが、過去のブラウザや一部の携帯用ブラウザでリダイレクト時にCookie情報が付加されずセッションが維持できないため、その対応としてURLパラメーターにセッション情報を付加する方法が行われていました。ただ、このURLでセッションを維持する方法は、昨今のブラウザやスマートフォンではCookieが対応しているため、不要な事が多いです。URLパラメーターに不要な情報を付加することを避ける目的で、<cflocation>タグに addtoken="no" を付加しましょう。

 

例: <cflocation url="リダイレクト(遷移)先URL" addtoken="no">

ColdFusionの各種情報の配信


最新情報
■2022/12/14 〜
ColdFusion 基礎プログラミング
記事一覧(随時更新)

■2022/6/28
Adobe ColdFusion 2021
インストール セットアップ情報
CFサーバーのインストール

■2019/11/27
『ColdFusion 実験室』
実験7

■2019/11/27
Adobe ColdFusion 2018
インストール セットアップ情報
CFサーバーのインストール

■2017/6/26
『ColdFusion 実験室』
実験6

■2017/3/27
ColdFusion 2016 対応
インストール セットアップ情報
CFサーバーのインストール
CFビルダーのインストール

■2016/9/20
『ColdFusion 2016 リリース
Enterprise Edition 活用資料』
記事一覧

■2016/3/30
『ColdFusion 実験室』
実験4、実験5

■2015/8/10 〜
『ColdFusion クリニック』
記事一覧(随時更新中)

教材プログラム単体販売


ColdFusionユーザーグループ
ColdFusionユーザーグループ
Copyright 2012 Samuraiz Corporation. All Rights Reserved.