1つのCGIでフレームページを表示
#! /usr/local/bin/perl # フォームデータ取り込み if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); $FORM{$key} = $value; } print qq(Content-type: text/html; charset=Shift_JIS\n\n); if($FORM{'frame'} eq "top") { frameTop(); #フレーム上を表示 } elsif($FORM{'frame'} eq "left") { frameLeft(); #フレーム左を表示 } elsif($FORM{'frame'} eq "right") { frameRight(); #フレーム右を表示 } else { frameSet(); #フレームセット } exit; #==============================フレームセット sub frameSet { print <<END; <html> <head> <title>1つのCGIでフレームページを表示</title> <frameset rows="25%,75%"> <frame name="top" src="$ENV{SCRIPT_NAME}?frame=top"> <frameset cols="30%,70%"> <frame name="left" src="$ENV{SCRIPT_NAME}?frame=left"> <frame name="right" src="$ENV{SCRIPT_NAME}?frame=right"> </frameset> </frameset> </head> </html> END } #==============================フレーム上を表示 sub frameTop { print <<END; <html> <head> <title>フレーム上</title> </head> <body bgcolor="#ffcccc"> <h1>上</h1> </body> </html> END } #==============================フレーム左を表示 sub frameLeft { print <<END; <html> <head> <title>フレーム左</title> </head> <body bgcolor="#ccccff"> <h1>左</h1> </body> </html> END } #==============================フレーム右を表示 sub frameRight { print <<END; <html> <head> <title>フレーム右</title> </head> <body bgcolor="#ccffcc"> <h1>右</h1> </body> </html> END }
〔 実行する 〕