#!/usr/bin/perl #================================================= # 中部楽器技術専門学校Q&Aリスト表示プログラム # Date : 2005/03/18 # Programmed by Hirohisa Nagai # nagai@gracy.info # Gracy Technology Inc. # http://www.gracy.co.jp/ #================================================= # NTパス用 $0 =~ /^(.*[\\])/; chdir($1); require '../lib/qa_ini.cgi'; require '../lib/jcode.pl'; #++++++++++++++++++++++++++++++++++++++++ 設定はここまで +++ if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); } else { $in = $ENV{'QUERY_STRING'}; } @formdata = split(/&/,$in); foreach(@formdata) { ($name,$value) = split(/=/, $_); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; &jcode::convert(\$value,'sjis'); $value =~ s//>/g; $value =~ s/\"/"/g; $value =~ s/\n//g; $value =~ s/\,/‚/g; $FORM{$name} .= "\0" if(defined($FORM{$name})); $FORM{$name} .= $value; } if($FORM{'mode'} eq 'confirm') { &confirm; } elsif($FORM{'mode'} eq 'regist') { ®ist; } else { &list_view; } #++++++++++++++++++++++++++++++++++++++ リスト表示 +++ sub list_view { if(!open(IN,"$list_html")) { &msg('エラー!!', 'スキンファイルのオープンに失敗しました。
[ confirm_html ]'); } @SKIN = ; close(IN); $skin_html = ''; foreach(@SKIN) { chomp($_); $skin_html .= "$_\n"; } ($header, $list, $middle, $msg_view, $footer) = split(//, $skin_html, 5); $list_body = ''; if(!open(IN,"$faq_file")) { &msg('エラー!!', 'データファイルの読み込みに失敗しました。', 0); } @DATA = ; close(IN); shift(@DATA); # 対象データの抜き出し foreach(@DATA) { ($data_no, $view_flg, $category, $name, $furi, $zip, $ken, $add, $bld, $mail, $age, $sex, $job, $kubou1, $kibou2, $faq_title, $faq_msg, $reply_msg, $reply_charge,$filename) = split(/\,/, $_, 20); chomp($filename); if($view_flg eq '0') { push(@TARGET, "$_"); } } @DATA = @TARGET; @TARGET = (); $start = $FORM{'page'} + 1; $end = $FORM{'page'} + $list_num; $i = 0; foreach(@DATA) { $i++; if($i < $start) { next; } if($i > $end) { last; } ($data_no, $view_flg, $category, $name, $furi, $zip, $ken, $add, $bld, $mail, $age, $sex, $job, $kubou1, $kibou2, $faq_title, $faq_msg, $reply_msg, $reply_charge, $filename) = split(/\,/, $_, 20); chomp($filename); $faq_msg =~ s/\r/
/g; $reply_msg =~ s/\r/
/g; if($category eq '0') { $category_img = 'icon1.gif'; } elsif($category eq '1') { $category_img = 'icon2.gif'; } elsif($category eq '2') { $category_img = 'icon3.gif'; } else { $category_img = 'icon4.gif'; } $list_title = "$faq_title"; # 一覧部分の整形 $list_body .= $list; $list_body =~ s/%title%/$list_title/; $list_body =~ s/%category%/$category_img/; if($i % 2 == 0) { $list_body =~ s/%bg_color%/bg_brown_l\.gif/; } else { $list_body =~ s/%bg_color%/bg_brown\.gif/; } # 回答部分の整形 $msg_body .= "\n"; $msg_body .= $msg_view; $msg_body =~ s/%q_title%/$faq_title/; $msg_body =~ s/%q_msg%/$faq_msg/; $msg_body =~ s/%a_msg%/$reply_msg/; $msg_body =~ s/%a_charge%/$reply_charge/; if($filename ne "") { $src = < IMG } else { $src = ""; } $msg_body =~ s/%src%/$src/; } $past = $FORM{'page'} - $list_num; if($FORM{'page'} ne '' && $FORM{'page'} ne '0') { $prev = <PREV EOH } if($end < @DATA) { $next = <NEXT EOH } $middle =~ s/%prev%/$prev/; $middle =~ s/%next%/$next/; print "Content-type: text/html\n"; print "$cookie_set\n"; print "$header"; print "$list_body"; print "$middle"; print "$msg_body"; print "$footer"; exit; }