BLOGinSPACE
インストール型ブログ
セキュリティコード
GoogleSitemapsジェネレータ
サイト探索
Google Sitemaps
Flash programming リンク集
Perl & CGI リンク集
PROGRAMING リンク集
プログラミング言語の種類
ActivePerl
Perlドキュメント(和訳)
Perlデータ構造
Apache JP
Apache 中核機能
« GoogleSitemapsジェネレータ | index | インストール型ブログ »
では、[1]から検証
HTML,JavaScript,Flash,CGIを使ったサンプル![]()
以下のファイル(4+1)をまとめたものをダウンロードできます
File: secur_code.zip
ほとんどがFlash(code.swf)を引数つきで呼び出すだけのタグです
Code: download
- <h1>セキュリティコード認証のテスト</h1>
- <form action="check.cgi" method="POST">
- <fieldset><legend>Regist Form</legend><br />
- <h2>登録するユーザ名を入力してください(半角英数字20文字以内)</h2>
- Name : <input type="text" name="name" size="20"><br /><br />
- <h2>右側の画像に表示されている、文字列を入力してください</h2>
- Code : <input type="text" name="code" size="10">
- <script>
- var rand = Math.floor(Math.random()*10000000000);
- document.write('<OBJECT classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '+
- 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" '+
- 'width="90" height="25" id="code.swf" align="middle"><param name="allowScriptAccess" value="sameDomain">'+
- '<param name="quality" value="high"><param name="bgcolor" value="#000000">'+
- '<param name="movie" value="code.swf"><param name="FlashVars" value="code=' + rand +'">'+
- '<embed src="code.swf" quality="high" bgcolor="#000000" width="90" height="25"'+
- ' name="code.swf" align="middle" allowScriptAccess="sameDomain" FlashVars="code=' + rand + '" '+
- 'type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">'+
- '</object><input type="hidden" name="ccode" value="'+rand+'">');
- </script>
- <noscript><h2>JavaScriptを有効にしてください</h2></noscript><br /><p><input type="submit" value="送 信"></p>
- </fieldset></form>
- <h3>* 画像が見えにくい場合は、<a href="./">読み込みなおして</a>ください</h3>
- <h3>* 送信後、確認画面を表示します</h3>
1行目で、書き込み用のCGIまでのパスを指定
Code: download
- cginame = "ccode.cgi?code=";
- inval = _root.code;
- lv = new LoadVars();
- lv.onLoad = function() {
- tfCount.text = this.secure_num;
- };
- lv.load(cginame + inval);
今回表示する文字列は、数字に限定しました(0〜9)
Code: download
- use CGI qw(:standard);
- $code_file = 'code.txt';
- $limit = 7200;
- $incode = (param('code') =~ /\d+/) ? param('code') : die;
- $rand_code = sprintf("%d%d%d%d%d", int(rand(10)),int(rand(10)),int(rand(10)),int(rand(10)),int(rand(10)));
- $time = time;
- open(CODE, "+< $code_file") or open(CODE, ">$code_file");
- flock(CODE,2);
- while(<CODE>) {
- $date = (split("\t",$_))[2];
- chomp($date);
- next if (($time-$date)>$limit);
- push @out, $_;
- }
- push @out, "$incode\t$rand_code\t$time\n";
- seek(CODE, 0, 0);
- print CODE @out;
- truncate(CODE, tell(CODE));
- close CODE;
- print "Content-type: text/plain\n\nsecure_num=$rand_code";
3行目は、データ保存ファイル名を指定
Code: download
- use CGI qw(:standard);
- $code_file = 'code.txt';
- $limit = 7200;
- $re_date = time;
- $que = param('que');
- $in{code} = param('code');
- $in{ccode} = param('ccode');
- $in{name} = param('name');
- $secur = sprintf("%d%d%d%d%d", int(rand(10)),int(rand(10)),int(rand(10)),int(rand(10)),int(rand(10)));
- open(FH, "+< $code_file") or die "Can't open $code_file: $!";
- flock(FH,2);
- while(<FH>) {
- chomp;
- my($ccode,$code,$date,$dmy) = split("\t");
- if(($ccode eq $in{ccode}) && ($code eq $in{code}) && (($re_date-$date)<$limit)) {
- push @out, qq($ccode\t$code\t$re_date\t$secur\n);
- $flag = 1;
- $ok_code = $code;
- $save_rand = $ccode;
- $save_time = $date;
- $now = $re_date;
- }
- elsif(($re_date-$date)>$limit) {
- next;
- }
- else {
- $flag = 2 if ($ccode eq $in{ccode});
- push @out, "$_\n";
- }
- }
- seek(FH,0,0);
- print FH @out;
- truncate(FH, tell(FH));
- close(FH);
- if($flag == 1) {
- $sec_code = qq(セキュリティーコードが一致しました) }
- elsif($flag == 2) {
- $sec_code = qq(セキュリティーコードが一致しません) }
- else {
- $sec_code = qq(セキュリティコードの有効期限が過ぎているか無効です) }
- print <<HTML;
- Content-type: text/html\n\n
- <html><head>
- <title>test - check</title></head><body>
- <h1>セキュリティコード認証のテスト - 確認</h1>
- <br />
- <h2>$sec_code</h2>
- <table width="400" border="1" cellspacing="0" cellpadding="3">
- <tr><td>ユーザ名</td><td>$in{name}</td></tr>
- <tr><td class="col">保存されているセキュリティーコード</td><td class="col">$in{code}</td></tr>
- <tr><td>表示されたセキュリティコード</td><td>$ok_code</td></tr>
- <tr><td class="col">保存されている乱数</td><td class="col">$save_rand</td></tr>
- <tr><td>JavaScriptで生成された乱数</td><td>$in{ccode}</td></tr>
- <tr><td class="col">保存されていた日付</td><td class="col">$save_time</td></tr>
- <tr><td>現在の日付(書き換えた日付)</td><td>$now</td></tr>
- </table>
- <br />
- <h3>* 通常はここで確認ボタンを表示してメール送信画面に進みますが省略</h3>
- <br />
- <p><a href="javascript:window.close()">閉じる</a></p>
- </body></html>
- HTML
このエントリーのトラックバックURL: http://sieg.xeong.com/mt-tb.cgi/23
このエントリーを含むはてなブックマーク![]()
サイン・インを確認しました、 さん。コメントしてください。 (サイン・アウト)
(いままで、ここでコメントしたとがないときは、コメントを表示する前にこのウェブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)