#!/usr/bin/perl use CGI; use CGI::Carp (fatalsToBrowser); #use LWP::Simple; #$q = new CGI; print "Content-type: text/html; charset=big5\n\n"; require "setup.pl"; #$pth = "log"; @querys = split(/&/, $ENV{'QUERY_STRING'}); foreach $query (@querys) { ($name, $value) = split(/=/, $query); $frm{$name} = $value; } 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; $value =~ s///g; $value =~ s/│//g; $frm{$name} = $value; } if ($frm{job} eq "new" or $frm{job} eq "edit") { $userid = $frm{id}; $usernick = $frm{nick}; $userpass = $frm{pass}; if (! length($userid)) { print "請輸入登入名\n"; $error=1; } if ($userid =~ /[^a-z\_]/) { print "登入名只准使用 a-z (細楷) 及 _ (底線)\n"; $error=1; } if ($userid =~ /^[^a-z]/) { print "登入名首字元應為 a-z\n"; $error=1; } if (length($userid) > 12) { print "登入名不可多於 12 字元\n"; $error=1; } if ($frm{job} eq "new"){ if (-e "$ply/$userid.txt") { print "戶口已存在\n"; $error=1; } } if (! length($usernick)) { print "請輸入暱稱\n"; $error=1; } if ($usernick =~ /[<>]/) { print "暱稱不得使用 HTML 碼\n"; $error=1; } if (! length($userpass)) { print "請輸入密碼\n"; $error=1; } if ($userpass =~ /[^A-Za-z\d\_]/) { print "密碼只准使用 A-z a-z 0-9 及 _ (底線)\n"; $error=1; } if (length($userpass) > 20) { print "登入名不可多於 20 字元\n"; $error=1; } if ($error) { print "\nBack\n"; exit(); } else { if ($frm{job} eq "new") { open (USER, ">>$ply/gamelog.txt") or die "error $ply"; print USER "$userid\n"; close (USER); print '新增戶口成功'; open (USER, ">$ply/$userid.txt"); print USER "NICK: $usernick\n"; print USER "PASS: $userpass\n"; print USER "OVERALL: 100\n"; print USER "CARD: 2\n"; close (USER); print "\n你現在有底分 100 分"; } else { open (USER, "$ply/$userid.txt") or die "error $ply"; @infos = ; close (USER); chomp(@infos); open (USER, ">$ply/$userid.txt") or die "error $ply"; foreach $info (@infos) { ($name,$value) = split(/: /, $info); if ($name eq "NICK") { print USER "NICK: $usernick\n"; } elsif ($name eq "PASS") { print USER "PASS: $userpass\n"; } else { print USER "$info\n"; } } print '戶口修改成功'; } print "\n\n回到主頁"; } } elsif ($frm{job} eq "apply") { print "\n"; print "申請問答遊戲戶口\n"; print "申請問答遊戲戶口\n"; print "\n"; print "\n"; print "\n"; print "登入名: 只限 細楷英文字 ( a-z ) 及 底線 ( _ ) \n"; print "暱稱: 會在名單顯示\n"; print "密碼: 只限 英數字元 ( A-Z a-z 0-9 ) 及 底線 ( _ ) \n"; print "\n"; print "* 三項都為必需填寫之項目\n"; print "* 主持人有權自行調整分數而不作通知\n"; print "\n"; print " "; print " "; print "\n"; print "\n"; } elsif ($frm{job} eq "view") { $userid = $frm{id}; $userpass = $frm{pass}; if (! (-e "$ply/$userid.txt")) { print "戶口不存在\n"; $error=1; } else { open (USER, "$ply/$userid.txt"); @infos = ; close (USER); foreach $info (@infos) { if ($info =~ /^PASS: /) { if ($info !~ / $userpass\n/) { print "密碼錯誤\n"; $error=1; } } } } if ($error) { print "\nBack\n"; exit(); } else { print "\n"; print "檢視/修改戶口資料\n"; print "檢視/修改戶口資料\n"; print "\n"; print "\n"; print "\n"; print "登入名:\n"; chomp(@infos); foreach $info (@infos) { ($name,$value) = split(/: /, $info); $value =~ s/\&/&/g; $value =~ s/</g; $value =~ s/>/>/g; $value =~ s/\"/"/g; if ($name eq "NICK") { print "暱稱:\n"; } elsif ($name eq "PASS") { print "密碼:\n"; } elsif ($name eq "THISGAME") { print "本局積分:$value 分\n"; } elsif ($name eq "OVERALL") { print "總分:$value 分\n"; } elsif ($name eq "CARD") { print "王牌:$value 張\n"; } } print "\n"; print "\n"; print " "; print " "; print "\n"; print ""; } }