現在のページは:Top < ColdFusion < コードサンプル集 Index < ColdFusion(画像認証)

ColdFusion(画像認証)

説明

フォームのスパム対策に有効な「画像認証画像(captcha)」を、cfimageタグを使うことによって大変簡単に作ることができます。

「cfimage action="captcha"」とし、パラメータで以下の内容を指定できます。

  • 画像幅(width):必須
  • 画像高さ(height):必須
  • 表示するテキスト(text):必須
  • フォントサイズ(fontSize):オプション(初期値24)
  • フォントの種類(fonts):オプション
  • 難易度(difficulty):オプション(初期値low ※3段階(low・medium・high)

コードと動き

<cfimage
  action="captcha"
  fontSize="22"
  width="240"
  height="100"
  text="#rndString#"
  fonts="Arial,Verdana"
  difficulty="low">
        

<cfimage
  action="captcha"
  fontSize="22"
  width="240"
  height="100"
  text="#rndString#"
  fonts="Arial,Verdana"
  difficulty="medium">
        

<cfimage
  action="captcha"
  fontSize="22"
  width="240"
  height="100"
  text="#rndString#"
  fonts="Arial,Verdana"
  difficulty="high">
        

(表示されるテキストはランダムに設定しています。)

※CAPTCHAイメージに使用するテキスト文字列を作成

<!--- テキスト文字列の長さを設定 --->
<cfset stringLength=5>
<!--- 文字列に使用する文字のリストを指定 --->
<cfset stringList="A,E,F,G,H,J,M,N,R,T,a,b,d,e,f
    ,g,h,m,n,q,r,t,2,3,4,5,6,7,9">
<cfset rndString="">
<!--- ランダムな文字から文字列を組み立てるループを作成 --->
<cfloop from="1" to="#stringLength#" index="i">
 <cfset rndNum=RandRange(1,listLen(stringList))>
 <cfset rndString 
     =rndString & listGetAt(stringList,rndNum)>
</cfloop>
<!--- ランダムな文字列をハッシュします --->
<cfset rndHash=Hash(rndString)>

注意メモ

  1. フォームに対するスパム対策として「画像認証」は大変有効な手段であるといえます。
    しかし、音声ブラウザー利用者の場合、音声ブラウザーでは「画像認証」用画像は読み上げないため、「画像認証」を取り入れたフォームをそのままで利用できません。「画像認証」を利用する場合は、そのような利用者もいることを配慮しましょう。

  2. 文字の大きさや文字数が、指定した画像幅には大きい場合、エラーとなることがあります。その場合、文字サイズを小さくしたり、数を減らしたり、画像幅を広げたりすることで対応できます。
    ※エラーメッセージ:
    「このエラーは、 argument が無効であるために発生しました。 入力を確認してください。
    CAPTCHA イメージに指定された幅が小さすぎてテキストが収まりません。 」

  3. 画像認証で使う文字はアルファベット(大文字・小文字)と数字を指定することができ、ランダムにセットすることができます。
    しかし、判別しにくい文字は避けた方がよいでしょう。

    • I と l と 1 (大アイと小エルと壱)
    • D と O と o と Q と 0 (大ディーと大小オーと大キューと零)
    • B と 8 (大ビーと八)
    • C と c (大小シー)
    • i と j (小アイと小ジェー)
    • K と k (大小ケー)
    • P と p (大小ピー)
    • S と s (大小エス)
    • U と u (大小ユー)
    • V と v (大小ブイ)
    • W と w (大小ダブリュー)
    • X と x (大小エックス)
    • Y と y (大小ワイ)
    • Z と z (大小ゼット)

(Sanou 2008/07/08)

店舗経営の皆様へ | 企業学校経営の皆様へ | 開発会社をお探しの方へ
ホーム | 事業案内 | 制作実績 | Webアプリ開発(ColdFusion) | 会社案内 |  お問合せ | サイトマップ