#!/usr/local/bin/perl #use CGI::Carp qw(fatalsToBrowser); #------------------------------------------ # FFXI Member Registration System IF # Version 0.67 (07/11/21) # script by seno 2002-2007 # webmaster@senobeya.com # 著作権表示は消すなとかしょうもないことは # 言わないのですヨ。好きにしてよし! #------------------------------------------ #設定類(0.5より各種の設定はsetup.cgiに移動しました) $ENV{'TZ'} = "JST-9"; #バージョン番号。いじらないでネ。改造した場合は適当にどうぞ。 $version="Version 0.67"; #親スクリプトのなまえ。ファイル名を変更したときはここも変更してください。 $script="guildmember.cgi"; #設定ファイル読み出し require "setup.cgi"; #日本語らいぶらり require './jcode.pl'; $color[0]=$color0; $color[1]=$color1; $color[2]=$color2; $color[3]=$color3; $color[4]=$color4; $color[5]=$color5; $color[6]=$color6; $color[7]=$color7; $color[8]=$color8; $color[9]=$color9; $color[10]=$color10; #################### # gmmini用独自設定 # #################### #表示サイズ横 $windowwidth=200; #小数点以下の処理(0:無処理 1:整数化処理) $deny_decimal=1; #ジョブ表示切替段数(標準:10/アルタナジョブ考慮 旧標準:9/アトルガンジョブ考慮) $job_cols=10; #mode=recent時の抽出候補数 $recent=5; #LSページへのリンク(設定なしでリンクなし) $lsurl=""; #$lsurl="http://www.senobeya.com/ff/"; #################### # # MAIN ROUTINEs # $agent=$ENV{'HTTP_USER_AGENT'}; &form_read; &header; &prof; &footer; # # SUB ROUTINE # sub form_read { #if ($ENV{'REQUEST_METHOD'} eq "POST") { @upfiles = (); if ($ENV{'REQUEST_METHOD'} eq "POST" && $ENV{'CONTENT_TYPE'} =~ m#^multipart/form-data#) { $buffer1 = ""; $qs = ""; $buffer2 = $ENV{'CONTENT_LENGTH'}; binmode(STDIN); while ($buffer2) { $buffer2 -= sysread(STDIN, $buffer1, $buffer2); $qs .= $buffer1; } $delimita = $1 if $qs =~ /^([^\r\n]*)/; foreach (split(/$delimita/,$qs)){ if ($_ =~ / name=\"(\w*)\"\r\n/){ $key = $1; } elsif ($_ =~ / name=\"(\w*)\"; filename=\"(.+)\"\r\n/i){ ($key,$upfile)=($1,$2); $upct = $1 if $_ =~ /Content-Type: ?(.*)\r\n/i; }else{ next; } $value = (split(/\r\n\r\n/,$_,2))[1]; $value =~ s/\r\n$//g; if ($key =~ /^upfile[1-9]*/ && $upfile ne ""){ push(@upfiles, $upfile); $upfile{$upfile} = $value; $upct{$upfile} = lc($upct); if($key eq "upfile"){ $in{'upfile'}=$value; $in{'upfilename'}=$upfile; $in{'upct'}=lc($upct); } } else { &jcode::convert(\$value,'sjis'); $value =~ s//>/g; $value =~ s/\t//g; $value =~ s/\r\n/
/g; $value =~ s/\n/
/g; $value =~ s/\r/
/g; # $value =~ s/\,//g; # $value =~ s/'/’/g; $FORM{$key} = $value; } } } else { #$buffer = $ENV{'QUERY_STRING'}; if($ENV{'REQUEST_METHOD'} eq 'GET' || $ENV{'REQUEST_METHOD'} eq 'HEAD') { $buffer = $ENV{'QUERY_STRING'}; } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $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/\n//g; $value =~ s/\t//g; $value =~ s/\r/
/g; # $value =~ s/\,//g; $FORM{$name} = $value; } } $name=$FORM{'name'}; $mode=$FORM{'mode'}; sub header { print "Content-type: text/html\n\n"; print "$topic\n"; print ''; print '\n"; if($bgimg eq ""){ print "\n\n"; } else { print "\n\n"; } } sub footer { print ""; } sub prof { if(!open(IN,"$datafile")){&error_message('datafile error2098','data file access failed.');} @all=; close IN; if($mode eq "recent"){ if($name ne ""){$recent=$name;} $count=0; @temp=(); foreach $i(@all){ ($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment)=split(/\t/,$i); push(@temp,"$time\t$count\t\n"); $count++; } @temp=reverse(sort(@temp)); ($dummy,$count)=split(/\t/,$temp[int(rand($recent))]); $match=$all[$count]; } elsif($mode eq "random"){ $match=$all[int(rand($#all))]; } else { $match=""; foreach $i(@all){ ($r_no,$r_name,$r_pass,$r_dummy)=split(/\t/,$i); if($r_name eq $name){ $match=$i; } } if($match eq ""){&header; &error_message('id/pass error','access failed.');} } ($no,$name,$pass,$anon,$race,$relm,$mainjob,$supportjob,$prof,$handle,$polhn,$mail,$home,$comment2,$point,$class,$time,$comment,$mrank,$etc[0],$etc[1],$etc[2],$prod[0],$prod[1],$prod[2],$prod[3],$prod[4],$prod[5],$prod[6],$prod[7],$prod[8],$prod[9],$prod[10],$prod[11],$prod[12],$prod[13],$prod[14],$prod[15],$lev[0],$lev[1],$lev[2],$lev[3],$lev[4],$lev[5],$lev[6],$lev[7],$lev[8],$lev[9],$lev[10],$lev[11],$lev[12],$lev[13],$lev[14],$lev[15],$lev[16],$lev[17],$lev[18],$lev[19])=split(/\t/,$match); @prod_r = split(/,/,$etc[1]); if($anon ne "on"){ if($class_edit==0){ $class =~ s/<//g; } if($job_max>$prod_max){ $maxcell=$job_max; } else { $maxcell=$prod_max; } #class / name #face / nation #diary info/new #job #job list0-8 #job list9-19 #prod 0-7 #comment print "
"; if($lsurl ne ""){ print "
所属:$guild_name
"; } else { print "
所属:$guild_name
"; } if($class eq ""){ print "
$name

"; } else { print "
[$class]
$name

"; } $diary=""; $diaryfile="$diarydir$name.$diaryletter"; if(-e "$diaryfile"){ $diary=""; if((-M $diaryfile)<1){ $diary.=""; } } if($iconuse eq "yes"){ print ""; } else { print "$racelist[$race]"; } print "$relmlist[$relm]/Rank:$mrank/"; print "$diary
"; if(($anon ne "on") || ($anon_mode != 1 )){ if($lev[$mainjob]<10){ $main_level="0$lev[$mainjob]"; } else { $main_level=$lev[$mainjob]; } if($supportjob <99){ $mod_level=int($lev[$mainjob]/2); if($mod_level==0){$mod_level=1;} if($mod_level>$lev[$supportjob]){$mod_level=$lev[$supportjob];} if($mod_level<10){ $mod_level="0$mod_level"; } print "
ジョブレベル
$joblist[$mainjob]$main_level/$joblist[$supportjob]$mod_level
"; } else { print "
ジョブレベル
$joblist[$mainjob]$main_level
"; } #ここでジョブ表示 print ""; for($j=0;$j<$job_cols;$j++){ print ""; } print ""; for($j=0;$j<$job_cols;$j++){ print ""; } print ""; for($j=$job_cols;$j<$job_max;$j++){ print ""; } print ""; for($j=$job_cols;$j<$job_max;$j++){ print ""; } print ""; } else { for ($j=0;$j<$maxcell+1;$j++){ print"anon
"; } } if(($anon ne "on") || ($anon_mode != 1 )){ print ""; for ($j=0;$j<$prod_max;$j++){ print ""; } print ""; for ($j=0;$j<$prod_max;$j++){ if($deny_decimal){$prod[$j]=int($prod[$j]);} print ""; } print "
$joblist[$j]
$lev[$j]
$joblist[$j]
$lev[$j]
$prodlist[$j]
$prod[$j]
"; } else { for ($j=0;$j<$maxcell+1;$j++){ print"anon
"; } } print "
コメント
$comment
"; $date=substr($time,0,8)." ".substr($time,9,2).":".substr($time,11,2); print "
Last Update:$date
"; print "
"; } } } sub make_salt{ srand(); $xx = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" . "abcdefghijklmnopqrstuvwxyz" . "0123456789."; $salt = substr($xx, int(rand(63)), 1); $salt .= substr($xx, int(rand(63)), 1); $salt .= substr($xx, int(rand(63)), 1); $salt .= substr($xx, int(rand(63)), 1); } sub conv_zenkaku{ for($j=0;$j<17;$j++){ @lev[$j]=~ s/0/0/g; @lev[$j]=~ s/1/1/g; @lev[$j]=~ s/2/2/g; @lev[$j]=~ s/3/3/g; @lev[$j]=~ s/4/4/g; @lev[$j]=~ s/5/5/g; @lev[$j]=~ s/6/6/g; @lev[$j]=~ s/7/7/g; @lev[$j]=~ s/8/8/g; @lev[$j]=~ s/9/9/g; } for($j=0;$j<10;$j++){ @prod[$j]=~ s/0/0/g; @prod[$j]=~ s/1/1/g; @prod[$j]=~ s/2/2/g; @prod[$j]=~ s/3/3/g; @prod[$j]=~ s/4/4/g; @prod[$j]=~ s/5/5/g; @prod[$j]=~ s/6/6/g; @prod[$j]=~ s/7/7/g; @prod[$j]=~ s/8/8/g; @prod[$j]=~ s/9/9/g; } } sub error_message { print "

$_[0]

\n"; print "

$_[1]

\n"; if($language ne "English"){ print "ブラウザの[戻る]ボタンを押して前の画面に移動してください.

\n"; } else { print "Push [back]button to move former page.

\n"; } &footer; exit; }