#!/usr/bin/perl #サーバーにより、上記のパスは異なります #画像サイズを調整可能です #スタイルの設定が可能です #番号順に挿入します use strict;#定義のない変数の利用は実行時のエラーとする use CGI::Carp qw(fatalsToBrowser);#重要なエラーを実行時に表示する use CGI_Lite; require "imgSz.pl";#画像サイズを取得する #CGIから戻るURL #各自のURLに変更が必要 my $URL="http://www.ccad.sist.chukyo-u.ac.jp/index.html"; my $cgicmd = "http://www.ccad.sist.chukyo-u.ac.jp/cgi-bin/adrsBookCcad/adrsBook.cgi"; #画像用フォルダ my $UploadDir="./img"; my $BUFFER = 2048; #perlでコンパイルするときは、以下のコメントの#をはずして下さい。 #これはFormタグのからのデータを置き換えます。 #$ENV{'REQUEST_METHOD'}='GET'; #$ENV{'QUERY_STRING'}='mode=view&gakuseki=6h100&yomi=ito&name=makoto&adrs=toyota&mail=kito&pphone=0566&hphone=090&pwd=ccad110'; my $cgi = new CGI_Lite(); #画像のアップロードのための設定 $cgi->set_directory("$UploadDir") || die &error; $cgi->set_platform("Unix"); $cgi -> set_buffer_size($BUFFER); $cgi -> add_timestamp(0); #$cgi -> filter_filename(\&convName); $cgi->close_all_files; #FORM,画像受け取り my %form; %form=$cgi->parse_form_data(); #パスワードを設定 my $pass='123';#パスワード if($form{'mode'} eq 'record') {&record();} #ファイルに保存 if($form{'mode'} eq 'view') {&view();} #名簿を表示 if($form{'mode'} eq 'edit') {&edit();} #編集 #終了 #Formデータを名簿ファイルに記録する sub record{ my ($lgakuseki,$lyomi,$lname,$ladrs,$lmail,$lpphone,$lhphone,$lfile); #入力チェック if(($form{'gakuseki'} eq "")||($form{'name'} eq "")||($form{'mail'} eq "")){#項目確認 &message('入力のない項目があります'); } if(($form{'pwd'} ne $pass)){#パスワード確認 &message('パスワードが一致しません'); } #入力ファイルを開く open (InFile,"adrsBook.txt"); my @cont=; #名簿ファイルを読む close InFile; #$form{'file'}(画像)が空かチェック if($form{'file'} =~ /__$/) { #ファイルを削除 unlink("$UploadDir/$form{'file'}"); $form{'file'} = ''; }; #前の画像ファイルを調べる ($lgakuseki,$lyomi,$lname,$ladrs,$lmail,$lpphone,$lhphone,$lfile)=split(/<>/,@cont[$form{'no'}]); if($lfile ne ''){#旧画像あり #登録済み画像があれば削除 if($form{'file'} ne "") { unlink("$UploadDir/$lfile"); $form{'file'}= $lfile; }else { #画像が登録済みなら、それを利用する $form{'file'}= $lfile;#調整中 } } #Fornからのデータ項目を <> で区切って1行に合成 my $newst="$form{'gakuseki'}<>$form{'yomi'}<>$form{'name'}<>$form{'adrs'}<>$form{'mail'}<>$form{'pphone'}<>$form{'hphone'}<>$form{'file'}<>$form{'memo'}<>$form{'theme'}<>\n"; open (OutFile,">adrsBook.txt"); #出力用ファイルとして開く #print header print qq(Content-type: text/html;charset=Shift_JIS\n\n); print qq(message); #既存ファイルに学籍番号の入学年次順に挿入する my $fgakuseki=substr($form{'gakuseki'},2,6);#比較キー my @mcont; my $contele; #print qq(no="$form{'no'}",oldfile:"$lfile",newfile:"$form{'file'}",
\n); foreach $contele (@cont){ ($lgakuseki,$lyomi,$lname,$ladrs,$lmail,$lpphone,$lhphone,$lfile)=split(/<>/,$contele);#項目に分解 if($lgakuseki eq $form{'gakuseki'}) {next;} #同じデータは削除する if(substr($lgakuseki,2,6) lt $fgakuseki) { push(@mcont,$contele); # print qq(push "$lgakuseki" \n); } else { push(@mcont,$newst);#新データを挿入する # print qq(insert "$fgakuseki
" \n); push(@mcont,$contele); # print qq(push "$lgakuseki" \n); $fgakuseki="99999"; } } if($fgakuseki ne "99999") { push(@mcont,$newst); } #print "record: $newst\n"; print OutFile @mcont; #出力ファイルに書き込む close OutFile; #出力ファイルを閉じる #登録完了を知らせるページを作成する print qq(

編集、追加、終了しました

); print qq( 戻る); print qq(); } #名簿ファイルを表示する sub view{ my $no = 0; my ($width,$height); #パスワードチェック if($form{'pwd'} ne $pass){ &message('パスワードが一致しません'); } #名簿ファイルを開く open (InFile,"adrsBook.txt"); #htmlの表形式の出力を開始 print qq(Content-type: text/html;charset=Shift_JIS\n\n); print qq(\nmessage\n); #tdタグのスタイルを設定 print qq(); print qq(\n); print qq(

名簿


); while(){ print qq();#表の出力を開始 my ($gakuseki,$yomi,$name,$adrs,$mail,$pphone,$hphone,$file,$memo,$theme)=split(/<>/);#項目に分解 print qq(\n); print qq(\n); print qq(\n); print qq(\n); print qq(\n); print qq(\n); print qq(\n); print qq(\n); print qq(\n); #print qq(\n); ($width,$height)=&imgSz::getSize("$UploadDir/$file"); if($width > 250) { #幅が250以下になるようサイズ調整  $height =int( $height * 250/$width); $width=250; #$height=200; }; if($file) {print qq(\n);} print qq(\n); print qq(
学籍番号)$gakuseki
名前(よみ)$yomi
名前(漢字)$name
住所$adrs
メール$mail
携帯番号$pphone
自宅電話番号 $hphone
一言メモ $memo
卒研テーマ $theme
画像$file
画像
編集する
\n

); $no = $no + 1; } close InFile; #print body print qq( ); print qq(\n); print qq(\n); print qq(
 新規登録
  トップに戻る
); ;#html出力を終了 } #---------------------------------------------------------------- #編集用画面生成 sub edit { my ($gakuseki,$yomi,$name,$adrs,$mail,$pphone,$hphone,$file,$memo,$theme); #$form{'no'}の記事を読む my $no = 0; if($form{'no'} ne ""){#編集の場合 open (InFile,"adrsBook.txt"); while(){ if($no == $form{'no'}) { ($gakuseki,$yomi,$name,$adrs,$mail,$pphone,$hphone,$file,$memo,$theme)=split(/<>/);#項目に分解 } $no = $no + 1; } } #print "debug:$yomi:$no:$form{'no'}\n"; print qq(Content-type: text/html;charset=Shift_JIS\n\n); print qq(\nmessage\n); print qq(); print qq(\n); print qq(

登録/編集を行います

); #
print <<"EOM"; EOM print <<"EOM";
学籍番号*
名前(よみ)*
名前(漢字)*
住所
メール*
携帯電話番号
自宅電話番号
一言メモ
卒研テーマ
画像
パスワード*

画像は .jpg または .gif 型のファイルを選択してください。
また、ファイル名は半角英数字としてください。


EOM print qq(

名簿の一覧



\n); print qq(
); print qq(); print qq(\n); print qq(
パスワード
  戻る); print qq (); #html出力を終了 } #メッセージをホームページに表示する sub message{ print qq(Content-type: text/html;charset=Shift_JIS\n\n); print qq(message); my $str = shift;#先頭のパラメータ(メッセージ)を取り出す print qq($str
); print qq( 戻る); print qq(); exit; #終了 }