#!/usr/bin/perl ;# ================================================================= # ;# ;# momoco version 4a ;; $ScriptName = 'momoco 4a'; ;# ;# Copyright (c) 2001,2002 Yasuda Shin < shin@momoco.tv > ;# MOMOCO.TV < http://www.momoco.tv/ > ;# MANGASEEK < http://www.mangaseek.net/ > ;# - - - - - - - - - - - - - - - - - - - - - - # ;# ;# - ÍøÍѵ¬Äê ;# ¡¦¤³¤Î¥¹¥¯¥ê¥×¥È¤ÏGNU GPL Ver.2¤Ë´ð¤Å¤¤¤ÆÇÛÉÛ¤·¤Þ¤¹¡£ ;# ¡¦Ãøºî¸¢¤ÏÊü´þ¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢ÇÛÉÛ¡¦Å¾ºÜ¡¦²þ¤¤Ï¼«Í³¤Ç¤¹¡£ ;# ¡¦ËÜ¥¹¥¯¥ê¥×¥ÈÆâ¤Î¥³¥Ô¡¼¥é¥¤¥Èɽµ¡¢¤ª¤è¤Ó¥Ö¥é¥¦¥¶¤ÇºÇ²¼Éô¤Ëɽ¼¨ ;# ¤µ¤ì¤ë¡Öby momoco 4a¡×¥·¥°¥Í¥Á¥ã¤Ï¤¤¤«¤Ê¤ëÍýͳ¤¬¤¢¤Ã¤Æ¤âºï½ü¡¢ ;# ²þã⤷¤Ê¤¤¤Ç²¼¤µ¤¤¡£ ;# ¡¦Å¾ºÜ¡¦ºÆÇÛÉÛ¤ò¤µ¤ì¤ë¾ì¹ç¤â¡¢É¬¤º¥³¥Ô¡¼¥é¥¤¥È¤òÌÀµ¤·¤Æ²¼¤µ¤¤¡£ ;# ¡¦²þ¤ÈǤòºÆÇÛÉÛ¤¹¤ë¾ì¹ç¤Ï¡¢É¬¤º¥ª¥ê¥¸¥Ê¥ë¤âźÉÕ¤·¤Æ²¼¤µ¤¤¡£ ;# ¡¦¤³¤Î¥¹¥¯¥ê¥×¥È¤ò»ÈÍѤ·¤¿·ë²Ì¤Ë¤Ä¤¤¤Æ¡¢À½ºî¼Ô¤Ï°ìÀÚ¤ÎÀÕǤ¤òÉ餤 ;# ¤Þ¤»¤ó¡£ ;# ;# - ÍøÍÑÀ©¸Â ;# ¡¦¡Ö¥³¥á¥ó¥È·ï¿ôɽ¼¨µ¡Ç½¡×¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ ;# momoco¤Ø¤Î¥¢¥¯¥»¥¹¤¬¶Ëü¤Ë½¸Ã椷¤¿¾ì¹ç¡¢¼ÂºÝ¤Î¥³¥á¥ó¥ÈÅê¹Æ¿ô¤È¡¢ ;# ¡ÖTOPIC°ìÍ÷¡× ¤Ëɽ¼¨¤µ¤ì¤ë¥³¥á¥ó¥È¿ô¤¬°ìÃפ·¤Ê¤¯¤Ê¤ë¤³¤È¤¬¤¢ ;# ¤ê¤Þ¤¹¡£¤³¤Î¸½¾Ý¤¬È¯À¸¤·¤¿¾ì¹ç¡¢¸½¾õ¤Ç¤ÏÉüµìºö¤¬¤¢¤ê¤Þ¤»¤ó¤Î ;# ¤Ç¡¢¡Ö¥³¥á¥ó¥È·ï¿ôɽ¼¨µ¡Ç½(option.pl)¡×¤òoff ¤Ë¤·¤Æ¤´ÍøÍѤ¯¤À ;# ¤µ¤¤¡£¥³¥á¥ó¥È¤ÏÀµ¾ï¤ËÅê¹Æ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ;# ;# - Ãí°Õ»ö¹à ;# ¡¦¤³¤Î¥¹¥¯¥ê¥×¥È¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢jcode.pl(*1)¤¬É¬ÍפǤ¹¡£ ;# ¡¦¤³¤Î¥¹¥¯¥ê¥×¥È¤ÏEUC-JP(LF)¤Çµ½Ò¤·¤Æ¤¢¤ê¤Þ¤¹¡£Ê¸»ú¥³¡¼¥É¤ä²þ¹Ô ;# ¥³¡¼¥É¤òÊѹ¹¤·¤Ê¤¤¤Ç²¼¤µ¤¤¡£ ;# ;# *1) jcode.pl ;# Copyright (c) 1992,1993,1994 Kazumasa Utashiro ;# Software Research Associates, Inc. ;# ;# - ÀßÃÖÊýË¡ ;# Ʊº¤µ¤ì¤Æ¤¤¤ëreadme.html ¤ò¤´Í÷²¼¤µ¤¤¡£ ;# ;# - ¼Õ¼ ;# ¡¦momoco ¤Î¡ÖÅê¹Æ½èÍýÇÓ¾¡×¥ë¡¼¥Á¥ó¤Ï¡¢Âçºê»á¤Ë¤è¤ë ;# ¡ÖPerl¥á¥â¡Ê*2¡Ë¡×¤Ç¾Ò²ð¤µ¤ì¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¤òÍøÍѤµ¤»¤Æ夤¤Æ ;# ¤¤¤Þ¤¹¡£¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£ ;# ¡¦momoco ¤Î¡Ö¥á¡¼¥ëÄÌÃΡץ롼¥Á¥ó¤Ï¡¢sendemail.pl(*3)¤ò ;# ¤â¤È¤ËÀ½ºî¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£ ;# ;# *2) Perl¥á¥â ;# http://www.din.or.jp/~ohzaki/perl.htm ;# ;# *3) sendemail.pl ;# Copyright by Terra ;# terra@ps.inforyoma.or.jp ;# ;# - »ÅÍÍÊѹ¹ÍúÎò ;# ¥¹¥¯¥ê¥×¥ÈËöÈø¤ËµºÜ¤·¤Þ¤·¤¿¡£ ;# ;# ================================================================= # ;# ¥æ¡¼¥¶¡¼ÀßÄê¡Êɬ¤ºÀßÄꤹ¤ë¤â¤Î¡Ë ;# ================================================================= # ;# ;# ¥æ¡¼¥¶¡¼ÀßÄê¤Ïɬ¤ºÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ ;# momoco.cgi¤ÈƱ¤¸¾ì½ê¤Ë¤¢¤ë 'setting.pl' ¤ÇÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ ;# ;# ================================================================= # ;# ¥ª¥×¥·¥ç¥óµ¡Ç½ ;# ================================================================= # ;# ¥ª¥×¥·¥ç¥óµ¡Ç½ÀßÄê¤ÏÊѹ¹¤·¤Ê¤¯¤Æ¤â½½Ê¬ momoco ¤ò¤´ÍøÍѤ¤ ;# ¤¿¤À¤±¤Þ¤¹¡£¤Ò¤È¤Þ¤º¤ÏÊü¤Ã¤Æ¤ª¤¡¢momoco ¤ò»È¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡ª¡Ê¾Ð ;# ¥ª¥×¥·¥ç¥óµ¡Ç½ÀßÄê¤Ï¡¢/pack/¥Õ¥©¥ë¥ÀÆâ¤ËƱº¤µ¤ì¤Æ¤¤¤ë 'option.pl' ;# ¤Ë¤¢¤ê¤Þ¤¹¡£ ;# ================================================================= # ;# ¥á¥¤¥ó¥í¥¸¥Ã¥¯ ;# ----------------------------------------------------------------- # ;# ¥é¥¤¥Ö¥é¥ê¤ÎÀë¸À¡¢´ðËÜÀßÄê¡¢¥ª¥×¥·¥ç¥óÀßÄê¤Î¼èÆÀ &Error('not exist ./setting.pl',__LINE__) unless eval{ require './setting.pl';}; &Error('not exist ./pack/jcode.pl',__LINE__) unless eval{ require './pack/jcode.pl';}; &Error('not exist ./pack/option.pl',__LINE__) unless eval{ require './pack/option.pl';}; ;# ----------------------------------------------------------------- # ;# ¥æ¡¼¥¶¡¼ÀßÄêÊÑ¿ô¤ÎÀ°Íý ;# ºÇÂçÃÍ/ºÇ¾®ÃÍ $TopicMax = '1000' if($TopicMax > 1000); $TopicMax = '0' if($TopicMax < 0); $CommentMax = '1000' if($CommentMax > 1000); $CommentMax = '0' if($CommentMax < 0); $CommentDivCel = '1' if($CommentDivCel < 1); $CommentDivCel = '9' if($CommentDivCel > 9); $CommentDivPc = '1' if($CommentDivPc < 1); $TitleSizeMax = '60' if($TitleSizeMax > 60); $TitleSizeMax = '0' if($TitleSizeMax < 0); $TitleSizeMin = '60' if($TitleSizeMin > 60); $TitleSizeMin = '0' if($TitleSizeMin < 0); $BodySizeMax = '2000' if($BodySizeMax > 2000); $BodySizeMax = '0' if($BodySizeMax < 0); $BodySizeMin = '2000' if($BodySizeMin > 2000); $BodySizeMin = '0' if($BodySizeMin < 0); $NameSizeMax = '50' if($NameSizeMax > 50); $NameSizeMax = '0' if($NameSizeMax < 0); $AddressSizeMax = '50' if($AddressSizeMax > 50); $AddressSizeMax = '0' if($AddressSizeMax < 0); $ezweb_pdxURL = $momocoURL; $ezweb_pdxURL =~ s!(.*)/momoco.cgi!$1!; ;# ¥Ç¡¼¥¿/²èÁü/css¥Ç¥£¥ì¥¯¥È¥ê¤ÎÀ®·¿ $DataDirectory =~ s/\/$//g; $ImageDirectory =~ s/\/$//g; $CssDirectory =~ s/\/$//g; ;# Shift-JIS²½ &jcode::euc2sjis(\$YourName); &jcode::euc2sjis(\$YourMail); &jcode::euc2sjis(\$YourPassword); &jcode::euc2sjis(\$BoardTitle); &jcode::euc2sjis(\$Anonymous); ;# ----------------------------------------------------------------- # ;# ¥·¥¹¥Æ¥àÊÑ¿ô¤Î·èÄê ;# momoco¥µ¥¤¥È $MomocoLink = 'http://www.momoco.tv/'; ;# $OtherBbs = 'http://www.momoco.tv/bbs.cgi'; ;# ´ÉÍý¼ÔÍÑ¥¥ã¥Ã¥× $YourMarkMain = '#'; $YourMarkSub = '¡ô'; &jcode::euc2sjis(\$YourMarkSub); ;# ¥Ö¥é¥¦¥¶Ì¾¾Î $BrowserType{'wap20'} = 'WAP2.0'; $BrowserType{'docomo'} = 'DoCoMo'; $BrowserType{'jphone'} = 'J-Phone'; $BrowserType{'astel'} = 'Astel'; $BrowserType{'ezweb'} = 'Ezweb'; $BrowserType{'pdx'} = "H\'\'"; $BrowserType{'pc'} = 'PC'; ;# flock´Ø¿ô¤òÍѤ¤¤¿¥Õ¥¡¥¤¥ë¥í¥Ã¥¯¤ÎÍ̵ ;# $Flock : 0/1 $Flock = '1'; ;# ¥Õ¥©¡¼¥à¤«¤é¤Î¥Ç¡¼¥¿¼èÆÀ¤ÈÀ®·Á &GetData(); &MoldData(); ;# µ¯Æ°ÆüÉÕ @Date = &GetDate(); ;# ----------------------------------------------------------------- # ;# µ¡¼ïȽÊÌ &PhoneSelect(); ;# ----------------------------------------------------------------- # ;# µ¯Æ°¥â¡¼¥ÉȽÊÌ &Topic() if($Form{'mode'} eq 'tp'); &TopicForm() if($Form{'mode'} eq 'tpf'); &NewTopic() if($Form{'mode'} eq 'ntp'); &CommentForm() if($Form{'mode'} eq 'cmf'); &NewComment()if($Form{'mode'} eq 'ncm'); &Admin()if($Form{'mode'} eq 'adm'); &TopPage(); exit; ;# ================================================================= # ;# ¥µ¥Ö¥ë¡¼¥Á¥ó ;# ----------------------------------------------------------------- # ;# ¥È¥Ã¥×¥Ú¡¼¥¸É½¼¨ sub TopPage{ ;# ¥í¡¼¥«¥ëÊÑ¿ô my($bt) = $Form{'btype'}; my($c); my($tpl); ;# ɽ¼¨¥Ú¡¼¥¸¤Î³ÎÄê $Form{'page'} = 1 if(!$Form{'page'}); ;# ¥È¥Ô¥Ã¥¯¥Ç¡¼¥¿¤ÎÆɤߤ³¤ß my ($not) = &TopicsFile('r'); ;# ɽ¼¨·ï¿ô if($bt eq 'pc'){ $tpl = 20; } else { $tpl = 8; } ;# ɽ¼¨ &HtmlChar(); &HtmlHeader(); open(HTML,"$HtmlDirectory/toppage.html") || &Error("File Error($HtmlDirectory/toppage.html)",__LINE__); while(){ if(/##TOPICLIST##/){ for($c=($tpl*($Form{'page'}-1));$c<=($tpl*$Form{'page'}-1);$c++){ last if(!$Tps[$c]); ;# ³¨Ê¸»ú¤ÎÉü¸µ $Tps[$c]->{title} = &Data2Emoji($Tps[$c]->{title},$Form{'btype'}); if($bt eq 'pc'){ print "
",sprintf("%.2d",$c+1)," | "; print "{file},"\">",$Tps[$c]->{title},""; print " #",$Tps[$c]->{number} if($CNdispray eq 'yes'); print " ",$Tps[$c]->{tdate} if($CDdispray eq 'yes' && $Tps[$c]->{number} eq '0'); print " ",$Tps[$c]->{cdate} if($CDdispray eq 'yes' && $Tps[$c]->{number} ne '0'); print " $Htmlchar[4]" if($Tps[$c]->{stop}); print " | "; print "
---|
$_[0]<\/strong><\/p>/g;
}
if(/##TOPICPASSWORD##/){
if($TopicPassword && $bt eq 'ezweb'){
s/##TOPICPASSWORD##/$Htmlchar[9]$Br$Br/g;
}elsif($TopicPassword && $bt ne 'ezweb'){
s/##TOPICPASSWORD##/$Htmlchar[9]$Br$Br/g;
} else {
s/##TOPICPASSWORD##//g;
}
}
if(/##OTHERBBS##/){
if($Sarashi eq 'yes' && $momocoCODE){
if($Form{'btype'} eq 'pc'){
print "$Htmlchar[7]";
} else {
print "\>\;$Htmlchar[7]";
}
}
next;
}
if(/##PR##/){
if($momocoPR eq 'yes'){
print "\t\t $_[0]<\/strong><\/p>/g;
}
if(/##COMMENTPASSWORD##/){
if($CommentPassword ne '' && $Form{'btype'} eq 'ezweb'){
s/##COMMENTPASSWORD##/$Htmlchar[9]$Br$Br/g;
}elsif($CommentPassword ne '' && $Form{'btype'} ne 'ezweb'){
s/##COMMENTPASSWORD##/$Htmlchar[9]$Br$Br/g;
} else {
s/##COMMENTPASSWORD##//g;
}
}
if(/##OTHERBBS##/){
if($Sarashi eq 'yes' && $momocoCODE){
if($Form{'btype'} eq 'pc'){
print "$Htmlchar[7]";
} else {
print "\>\;$Htmlchar[7]";
}
}
next;
}
if(/##PR##/){
if($momocoPR eq 'yes'){
print "\t\t ","\n";
}
next;
}
s/##TOPLINK##/$Number[0]$Htmlchar[20]<\/a>/g;
s/##TOPICTITLE##/$Form{'title'}/g;
s/##FILE##/$Form{'file'}/g;
s/##TOPICBODY##/$Form{'comment'}/g;
s/##PAGENUMBER##/$Form{'page'}/g;
s/##SCRIPTNAME##/$ScriptName<\/a>
","\n";
print "\t\t
for $BrowserType{$Form{'btype'}}/g;
s/##BTITLE##/$BoardTitle/g;
s/##AUTODELETE##/$autodelete/g;
s/##IMAGEURL##/$ImageDirectory/g;
s/##CSSURL##/$CssDirectory/g;
s/##BROWSETYPE##/$Form{'btype'}/g;
s/##METHOD##/$Method/g;
s!##BODYSIZEMAX##!int($BodySizeMax/2)!eg;
s/##ACTION##/$momocoURL/g;
print;
}
close(HTML);
exit;
}
;# ----------------------------------------------------------------- #
;# ¥³¥á¥ó¥È¥Õ¥©¡¼¥àɽ¼¨
sub CommentForm{
;# ¥í¡¼¥«¥ëÊÑ¿ôÀë¸À
my($bt) = $Form{'btype'};
my($ord)= $Form{'ord'};
;# µ¯Æ°ÆüÉÕ
@Date = &GetDate();
;# ¥×¥í¥¯¥·¥Á¥§¥Ã¥¯
&ProxyCheck($Date[1]);
;# ¥È¥Ô¥Ã¥¯¥Ç¡¼¥¿¤ÎÆɤߤ³¤ß¡Ê¥¹¥ì¥Ã¥É¥¹¥È¥Ã¥Ñ¡¼¥Á¥§¥Ã¥¯¡Ë
if(&TopicsFile('r',$Form{'file'})){
&Error (&jcode::sjis('¤³¤Î¥È¥Ô¥Ã¥¯¤Ë¤Ï¥³¥á¥ó¥È¤ò¤Ä¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤»¤ó¡£','euc'),__LINE__);
}
;# ¥³¥á¥ó¥È¥Ç¡¼¥¿¤ÎÆɤߤ³¤ß¡ÊºÇÂ祳¥á¥ó¥È·ï¿ô¤Î»»½Ð¤ÈÀ©¸Â)
my($noc) = &CommentFile('r',$Form{'file'});
if($CommentMax != 0 && $noc > $CommentMax){
my($errormessage) = '¤ª¤á¤Ç¤È¤¦¡ª¤³¤Î¥È¥Ô¥Ã¥¯¤Ï';
$errormessage .= " $CommentMax ";
$errormessage .= '¥³¥á¥ó¥È¤Ë㤷¤Þ¤·¤¿¡ª';
$errormessage .= '¤³¤ì°Ê¾å¤Î¥³¥á¥ó¥È¤Ï¤Ç¤¤Þ¤»¤ó¤Î¤ÇÊ̥ȥԥ寤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£';
&jcode::euc2sjis(\$errormessage);
&Error("$errormessage",__LINE__);
}
;# Cookie½èÍý
if($UseCookie eq 'yes'){
&GetCookie();
}
;# ɽ¼¨
&HtmlChar();
&HtmlHeader();
open(HTML,"$HtmlDirectory/commentform.html") || &Error("File Error($HtmlDirectory/commentform.html)",__LINE__);
while(){
if(!$FormError){
if($UseCookie eq 'yes'){
s/##COMMENTNAME##/$COOKIE{'name'}/g;
s/##COMMENTMAIL##/$COOKIE{'mail'}/g;
} else {
s/##COMMENTNAME##//g;
s/##COMMENTMAIL##//g;
}
s/##ERRORMESSAGE##//g;
} else {
s/##COMMENTNAME##/$Form{'name'}/g;
s/##COMMENTMAIL##/$Form{'mail'}/g;
s/##ERRORMESSAGE##/ ","\n";
}
next;
}
s/##TOPLINK##/$Number[0]$Htmlchar[21]<\/a>/g;
s/##FILE##/$Form{'file'}/g;
s/##COMMENTBODY##/$Form{'comment'}/g;
s/##PAGENUMBER##/$Form{'page'}/g;
s/##SCRIPTNAME##/$ScriptName<\/a>
","\n";
print "\t\t
for $BrowserType{$Form{'btype'}}/g;
s/##BTITLE##/$BoardTitle/g;
s/##IMAGEURL##/$ImageDirectory/g;
s/##CSSURL##/$CssDirectory/g;
s/##BROWSETYPE##/$Form{'btype'}/g;
s/##METHOD##/$Method/g;
s!##BODYSIZEMAX##!int($BodySizeMax/2)!eg;
s/##ACTION##/$momocoURL/g;
print;
}
close(HTML);
exit;
}
;# ----------------------------------------------------------------- #
;# ¥È¥Ô¥Ã¥¯¿·µ¬ºîÀ®
sub NewTopic{
;# ¥í¡¼¥«¥ëÊÑ¿ôÀë¸À
my($bt) = $Form{'btype'};
my($ord)= $Form{'ord'};
;# ¥Ó¥¸¡¼¥Á¥§¥Ã¥¯
unless(-e "./check/plock"){
$FormError = 1;
$Form{'mode'} = 'tpf';
&TopicForm(&jcode::sjis('º®»¨¤·¤Æ¤¤¤Þ¤¹¡£¾¯¤·ÂԤäƤ«¤éºÆÅٻ¤Æ¤¯¤À¤µ¤¤¡£','euc'));
exit;
}
;# Referer¥Á¥§¥Ã¥¯
&RefererCheck if($RefererCheck eq 'yes');
;# µ¯Æ°ÆüÉÕ
@Date = &GetDate();
;# ¥×¥í¥¯¥·¥Á¥§¥Ã¥¯
&ProxyCheck($Date[1]);
;# ¥Ñ¥¹¥ï¡¼¥É½èÍý
if($TopicPassword ne '' && $Form{'topicpassword'} ne $TopicPassword){
$FormError = 1;
$Form{'mode'} = 'tpf';
&TopicForm(&jcode::sjis('¥È¥Ô¥Ã¥¯ºîÀ®Íѥѥ¹¥ï¡¼¥É¤¬°ã¤¤¤Þ¤¹¡£','euc'));
exit;
}
;# ̤ÆþÎÏ¥Á¥§¥Ã¥¯
if(!$Form{'name'}){
if($AnonymousError eq 'yes' || !$Anonymous){
$FormError = 1;
$Form{'mode'} = 'tpf';
&TopicForm(&jcode::sjis('̾Á°¤¬Ì¤ÆþÎϤǤ¹¡£','euc'));
exit;
}
else {
$Form{'name'} = $Anonymous;
}
}
if($Form{'comment'} eq '' || $Form{'title'} eq ''){
$FormError = 1;
$Form{'mode'} = 'tpf';
&TopicForm(&jcode::sjis('¥Õ¥©¡¼¥à¤Ë̤ÆþÎϸĽ꤬¤¢¤ê¤Þ¤¹¡£','euc'));
exit;
}
;# ¥µ¥¤¥ºÀ©¸Â
;# ̾Á°
if($NameSizeMax != 0 && length($Form{'name'}) > $NameSizeMax){
$FormError = 1;
$Form{'mode'} = 'tpf';
&TopicForm(&jcode::sjis("̾Á°¤¬ºÇÂçÃÍ¡Ê$NameSizeMax byte¡Ë¤òĶ¤¨¤Þ¤·¤¿¡£",'euc'));
exit;
}
;# ´ÉÍý¼ÔÍÑ¥³¥Æ¥Ï¥óÀ©¸Â¤Èµö²Ä
if($YourName){
if($Form{'name'} eq $YourName || $Form{'name'} eq "$YourName$YourMarkMain" || $Form{'name'} eq "$YourName$YourMarkSub"){
if($Form{'mail'} ne $YourPassword &&
$Form{'mail'} ne "$YourPassword$Iyan" &&
$Form{'mail'} ne "$Iyan$YourPassword" &&
$Form{'mail'} ne "$YourPassword$Oresama" &&
$Form{'mail'} ne "$Oresama$YourPassword" &&
$Form{'mail'} ne "$YourPassword$Gomenchai" &&
$Form{'mail'} ne "$Gomenchai$YourPassword"
){
$FormError = 1;
$Form{'mode'} = 'tpf';
my($errormessage) = '¤½¤Î̾Á°¤Ï´ÉÍý¿Í¤¬»È¤Ã¤Æ¤¤¤Þ¤¹¡£';
$errormessage .= "$Br";
$errormessage .= '¾¤Î̾Á°¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£';
&TopicForm(&jcode::sjis($errormessage,'euc'));
exit;
} else {
$Form{'mail'} =~ s/$YourPassword//g;
$Form{'mail'} .= $YourMail;
$Form{'name'} = "$YourName$YourMarkMain";
}
}elsif($Form{'name'} =~ /($YourMarkMain)$/i || $Form{'name'} =~ /($YourMarkSub)$/i){
$FormError = 1;
$Form{'mode'} = 'tpf';
my($errormessage) = "̾Á°¤ÎËöÈø¤Ë $1 ¤Ï»È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£";
$errormessage .= "$Br";
$errormessage .= '´ÉÍý¿ÍÀìÍѤǤ¹¡£';
&TopicForm(&jcode::sjis($errormessage,'euc'));
exit;
}
}
;# momoco¥³¥Æ¥Ï¥óÀ©¸Â
if($Form{'name'} eq 'momoco'){
$FormError = 1;
$Form{'mode'} = 'tpf';
my($errormessage) = '¤à¤¤¤Ã¡ª';
$errormessage .= "$Br";
$errormessage .= '¤¢¤¿¤·¤Î̾Á°»È¤¦¤Ê¤ó¤Æ£±£°¤ª¤¯¤Þ¤ó¤Í¤óÁᤤ¤ï¤è¡£¤À¤«¤é»È¤Ã¤Á¤ã¤À¡¼¤á¡£';
$errormessage .= "$Br";
$errormessage .= '¤¢¤Ê¤¿¤Îmomoco¤è¤ê¡£';
&TopicForm(&jcode::sjis($errormessage,'euc'));
exit;
}
;# ¥á¡¼¥ë
if($AddressSizeMax != 0 && length($Form{'mail'}) > $AddressSizeMax){
$FormError = 1;
$Form{'mode'} = 'tpf';
&TopicForm(&jcode::sjis("¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬ºÇÂçÃÍ¡Ê$AddressSizeMax byte¡Ë¤òĶ¤¨¤Þ¤·¤¿¡£",'euc'));
exit;
}
;# ¥¿¥¤¥È¥ë
if($TitleSizeMin != 0 && length($Form{'title'}) < $TitleSizeMin){
$FormError = 1;
$Form{'mode'} = 'tpf';
my($errormessage) = '¥¿¥¤¥È¥ë¤¬ºÇ¾®Ê¸»ú¿ô ( ';
$errormessage .= "$TitleSizeMin byte";
$errormessage .= ' )¤è¤ê¾¯¤Ê¤¤¤Ç¤¹¡£';
&TopicForm(&jcode::sjis($errormessage,'euc'));
exit;
}
if($TitleSizeMax != 0 && length($Form{'title'}) > $TitleSizeMax){
$FormError = 1;
$Form{'mode'} = 'tpf';
my($errormessage) = '¥¿¥¤¥È¥ë¤¬ºÇÂçʸ»ú¿ô ( ';
$errormessage .= "$TitleSizeMax byte";
$errormessage .= ' )¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£';
&TopicForm(&jcode::sjis($errormessage,'euc'));
exit;
}
;# ËÜʸ
if($BodySizeMin != 0 && length($Form{'comment'}) < $BodySizeMin){
$FormError = 1;
$Form{'mode'} = 'tpf';
my($errormessage) = 'ȯ¸ÀÆâÍƤ¬ºÇ¾®Ê¸»ú¿ô ( ';
$errormessage .= "$BodySizeMin byte";
$errormessage .= ' )¤è¤ê¾¯¤Ê¤¤¤Ç¤¹¡£';
&TopicForm(&jcode::sjis($errormessage,'euc'));
exit;
}
if($BodySizeMax != 0 && length($Form{'comment'}) > $BodySizeMax){
$FormError = 1;
$Form{'mode'} = 'tpf';
my($errormessage) = 'ȯ¸ÀÆâÍƤ¬ºÇÂçʸ»ú¿ô ( ';
$errormessage .= "$BodySizeMax byte";
$errormessage .= ' )¤òĶ¤¨¤Æ¤¤¤Þ¤¹¡£';
&TopicForm(&jcode::sjis($errormessage,'euc'));
exit;
}
;# NG¥ï¡¼¥É¥Á¥§¥Ã¥¯
if($NGWordCheck eq 'yes'){
if(!open(NG,"./check/ngword.dat")){
&Error('File Error (ngword.dat)',__LINE__);
exit;
}
my($ngword,@checkstr,$checkstr);
@checkstr = ("$Form{'title'}","$Form{'name'}","$Form{'mail'}","$Form{'comment'}");
while($ngword = ";
print "
","\n";
} else {
print "{file},"\" type=\"checkbox\" value=\"1\">";
print "{file},"\" $AddressKey=\"";
print $tpl-($tpl*$Form{'page'}-($c+1)),"\">";
print $Number[$tpl-($tpl*$Form{'page'}-($c+1))],$Tps[$c]->{title},"";
print " #",$Tps[$c]->{number} if($CNdispray eq 'yes');
print " ",$Tps[$c]->{tdate} if($CDdispray eq 'yes' && $Tps[$c]->{number} eq '0');
print " ",$Tps[$c]->{cdate} if($CDdispray eq 'yes' && $Tps[$c]->{number} ne '0');
print " $Htmlchar[4]" if($Tps[$c]->{stop});
print $Br,"\n";
}
}
next;
}
if(/##PAGELINK##/){
if($bt eq 'pc'){
if(!$Tps[$tpl*$Form{'page'}+1]){
if($Form{'page'}-1<=0){ print "$Htmlchar[2]";
print " | $Htmlchar[3]","\n"; }
else{ print "$Htmlchar[2]";
print " | $Htmlchar[3]","\n"; }
}
else{
if($Form{'page'}-1<=0){ print "$Htmlchar[2] | ";
print "$Htmlchar[3]","\n"; }
else{ print "$Htmlchar[2] | ";
print "$Htmlchar[3]","\n"; }
}
}
else{
if(!$Tps[$tpl*$Form{'page'}+1]){
if($Form{'page'}-1<=0){next;}
else{ print "$Number[10]$Htmlchar[0] | $Htmlchar[1]$Number[11]","\n"; }
}
else{
if($Form{'page'}-1<=0){ print "$Number[10]$Htmlchar[0] | ";
print "$Htmlchar[1]$Number[11]","\n"; }
else{ print "$Number[10]$Htmlchar[0] | ";
print "$Htmlchar[1]$Number[11]","\n"; }
}
}
next;
}
if(/##PR##/){
if($momocoPR eq 'yes'){
print "\t\t";
print " ";
print "",sprintf("%.2d",$c+1);
print " {file},"\" type=\"checkbox\" value=\"1\"> ";
print "{file},"\">",$Tps[$c]->{title},"";
print " #",$Tps[$c]->{number} if($CNdispray eq 'yes');
print " ",$Tps[$c]->{tdate} if($CDdispray eq 'yes' && $Tps[$c]->{number} eq '0');
print " ",$Tps[$c]->{cdate} if($CDdispray eq 'yes' && $Tps[$c]->{number} ne '0');
print " $Htmlchar[4]" if($Tps[$c]->{stop});
print " ";
print " ","\n";
}
next;
}
s/##NORMALLINK##/$Number[0]$Htmlchar[16]<\/a>/g;
s/##SCRIPTNAME##/$ScriptName<\/a>
","\n";
print "\t\t
for $BrowserType{$bt}/g;
s/##BTITLE##/$BoardTitle/g;
s/##PAGENUMBER##/$Form{'page'}/g;
s/##NoT##/$not/g;
s/##CSSURL##/$CssDirectory/g;
s/##IMAGEURL##/$ImageDirectory/g;
s/##BROWSETYPE##/$bt/g;
s/##METHOD##/$Method/g;
s/##ACTION##/$momocoURL/g;
s/##PASSWORD##/$Form{'pw'}/g;
print;
}
close(HTML);
exit;
}
sub AdminTopic{
;# ¥í¡¼¥«¥ëÊÑ¿ô
my($bt) = $Form{'btype'}; my($c,$cml);
my($ord)= $Form{'ord'};
my($start,$end);
;# ɽ¼¨¥Ú¡¼¥¸¤Î³ÎÄê
$Form{'tpage'} = 1 if(!$Form{'tpage'});
;# ¥È¥Ô¥Ã¥¯¥Ç¡¼¥¿¤ÎÆɤߤ³¤ß¡Ê¥¹¥ì¥Ã¥É¥¹¥È¥Ã¥Ñ¡¼¥Á¥§¥Ã¥¯¡Ë
my ($stop) = &TopicsFile('r',$Form{'file'});
;# ¥³¥á¥ó¥È¥Ç¡¼¥¿¤ÎÆɤߤ³¤ß
my($noc) = &CommentFile('r',$Form{'file'});
;# ³¨Ê¸»ú¤ÎÉü¸µ
$Cms[0]->{title} = &Data2Emoji($Cms[0]->{title},$Form{'btype'});
$Cms[0]->{cm} =~ s/\e$//g;
$Cms[0]->{cm} =~ s/\e/$Br\n/g;
$Cms[0]->{cm} = &Data2Emoji($Cms[0]->{cm},$Form{'btype'});
$Cms[0]->{name} = &Data2Emoji($Cms[0]->{name},$Form{'btype'});
$Cms[0]->{mail} = &Data2Emoji($Cms[0]->{mail},$Form{'btype'});
;# ɽ¼¨·ï¿ô
if($bt eq 'pc'){
$cml = $CommentDivPc;
}else{
$cml = $CommentDivCel; }
if($ord eq 'new'){
$end=($noc-(($Form{'tpage'}-1)*$cml));
$start=($end-$cml+1);
$start=1 if($start<=1);
}else{
$start=(($cml*($Form{'tpage'}-1))+1);$end=(($cml*$Form{'tpage'}-1)+1);
}
;# ɽ¼¨
&HtmlChar();
&HtmlHeader();
open(HTML,"$HtmlDirectory/admintopic.html") || &Error("File Error($HtmlDirectory/admintopic.html)",__LINE__);
while(){
if(/##JAVASCRIPT##/){
print "","\n";
next;
}
if(/##COMMENTLIST##/){
for($c=$start;$c<=$end;$c++){
last if(!$Cms[$c]);
;# ³¨Ê¸»ú¤ÎÉü¸µ
$Cms[$c]->{cm} =~ s/\e$//g;
$Cms[$c]->{cm} =~ s/\e/$Br\n/g;
$Cms[$c]->{cm} = &Data2Emoji($Cms[$c]->{cm},$Form{'btype'});
$Cms[$c]->{name} = &Data2Emoji($Cms[$c]->{name},$Form{'btype'});
$Cms[$c]->{mail} = &Data2Emoji($Cms[$c]->{mail},$Form{'btype'});
print "$Hr","\n" unless($ParentDisp eq '0' && $bt ne 'pc' && $Form{'tpage'} != 1 && $c == $start);
print " ","\n";
}
next;
}
s/##TOPICTITLE##/$Cms[0]->{title}/g;
s/##TOPLINK##/$Number[0]$Htmlchar[22]$Htmlchar[20]<\/a>/g;
s/##SCRIPTNAME##/$ScriptName<\/a>
","\n";
print "\t\t
for $BrowserType{$bt}/g;
s/##BTITLE##/$BoardTitle/g;
s/##PAGENUMBER##/$Form{'page'}/g;
s/##CSSURL##/$CssDirectory/g;
s/##IMAGEURL##/$ImageDirectory/g;
s/##BROWSETYPE##/$bt/g;
s/##METHOD##/$Method/g;
s/##ACTION##/$momocoURL/g;
s/##FILE##/$Form{'file'}/g;
s/##PASSWORD##/$Form{'pw'}/g;
print;
}
close(HTML);
exit;
}
sub AdminDelTopic{
my($key);
foreach $key (sort keys %Form){
if($key =~ /^\d{14}$/ && $Form{$key} == 1){
my($delete) = &TopicsFile('d',$key);
my($result) = &CommentFile('d',$delete);
}
}
$Form{'mode'} eq 'adm';
undef $Form{'amode'};
&Admin();
exit;
}
sub AdminDelComment{
my($key);
foreach $key (sort keys %Form){
if($key =~ /^(\d{14})-(\d{3,})$/){
my($file,$num) = ($1,$2);
my($noc) = &CommentFile('d',$file,$num);
$IOG = 'iyan';
my($result) = &TopicsFile('e',$file,$noc);
}
}
$Form{'mode'} eq 'adm';
$Form{'amode'} = 'tp';
$Form{'ord'} = 'new';
$Form{'page'} = 1;
$Form{'tpage'} = 1;
&Admin();
exit;
}
sub AdminStopTopic{
&HtmlHeader();
my($key);
foreach $key (sort keys %Form){
if($key =~ /^\d{14}$/ && $Form{$key} == 1){
my($result) = &TopicsFile('s',$key);
}
}
$Form{'mode'} eq 'adm';
undef $Form{'amode'};
&Admin();
exit;
}
;# ----------------------------------------------------------------- #
;# ¥í¥°²½µ¡Ç½
sub MakeLog{
my($key,$line);
foreach $key (sort keys %Form){
if($key =~ /^\d{14}$/ && $Form{$key} == 1){
open(LOG,">>./data/log.dat") || &Error("File Error(./data/log.dat)",__LINE__);
open(DATA,"./data/$key") || &Error("File Error(./data/$key)",__LINE__);
flock(2,LOG) if($Flock);
flock(2,DATA) if($Flock);
print LOG "----- $key deleted $Date[1] -----","\n";
while ($line = ){
print LOG $line;
}
print LOG "\n\n";
flock(8,DATA) if($Flock);
flock(8,LOG) if($Flock);
close(LOG);
my($delete) = &TopicsFile('d',$key);
my($result) = &CommentFile('d',$delete);
}
}
$Form{'mode'} eq 'adm';
undef $Form{'amode'};
&Admin();
exit;
}
;# ----------------------------------------------------------------- #
;# ¥¨¥é¡¼½èÍý
sub Error{
my(@mes) = @_;
&HtmlChar();
&HtmlHeader();
open(HTML,"$HtmlDirectory/error.html") || die;
while(){
s/##BTITLE##/$BoardTitle/g;
s/##MESSAGE##/$mes[0] \[line:$mes[1]\]/g;
s/##CSSURL##/$CssDirectory/g;
s/##IMAGEURL##/$ImageDirectory/g;
s/##TOPLINK##/$Number[0]$Htmlchar[20]<\/a>/g;
s/##MOMOCO##/$momocoURL/g;
s/##SCRIPTNAME##/$ScriptName<\/a>/g;
if(/##OTHERBBS##/){
if($Sarashi eq 'yes' && $momocoCODE){
if($Form{'btype'} eq 'pc'){
print "$Htmlchar[7]";
} else {
print "\>\;$Htmlchar[7]";
}
}
next;
}
if(/##PR##/){
if($momocoPR eq 'yes'){
print "\t\t ","\n";
}
next;
}
print;
}
close(HTML);
exit;
}
;# ----------------------------------------------------------------- #
;# HTML¥Ø¥Ã¥À¡¼
sub HtmlHeader(){
if(!$HtmlHeader){
if($ENV{'HTTP_ACCEPT_ENCODING'}=~/gzip/ && $UseGzip eq 'yes'){
print "Pragma: no-cache\n";
print "Cache-Control: no-cache\n";
print "Content-type: text/html\; charset=Shift_JIS\n";
print "Content-encoding: gzip\n\n";
open(STDOUT,"| $GzipDirectory -1 -c");
} else {
print "Pragma: no-cache\n";
print "Cache-Control: no-cache\n";
print "Content-type: text/html\; charset=Shift_JIS\n\n";
}
$HtmlHeader = 1;
}
}
;# ----------------------------------------------------------------- #
;# µ¯Æ°ÆüÉÕ¼èÆÀ
sub GetDate{
my(@dt);
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)
= localtime(time);
$year += 1900;
$mon += 1;
$dt[0] = sprintf("%.4d%.2d%.2d%.2d%.2d%.2d",$year,$mon,$mday,$hour,$min,$sec);
$dt[1] = sprintf("%.4d/%.2d/%.2d %.2d:%.2d:%.2d",$year,$mon,$mday,$hour,$min,$sec);
$dt[2] = $year;
$dt[3] = $hour;
$dt[4] = $min;
return @dt;
}
;# ----------------------------------------------------------------- #
;# µ¡¼ïȽÊÌ
sub PhoneSelect{
my($env) = \%ENV;
my($agent) = $env->{HTTP_USER_AGENT};
my($jphone) = $env->{HTTP_X_JPHONE_MSNAME};
my($accept) = $env->{HTTP_ACCEPT};
if($Form{'btype'} eq 'jphone' || $jphone ne ''){
$Form{'btype'} = 'jphone';
$AddressKey = 'directkey';
undef @Number;
$Hr = '
","\n";
print "\t\t
';
$Br = '
';
$Method = 'get';
$httpReferer = $momocoURL;
$momocoURL = './momoco.cgi';
} elsif ($Form{'btype'} eq 'wap20' || $agent =~ m#DoCoMo/2\.0#i || $agent =~ /^.+UP.Browser/i){
$Form{'btype'} = 'wap20';
$AddressKey = 'accesskey';
@Number = ("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]","[8]","[9]","[*]",'[#]');
$Hr = '
';
$Br = '
';
$Method = 'post';
$httpReferer = $momocoURL;
$momocoURL = './momoco.cgi';
} elsif ($Form{'btype'} eq 'ezweb' || $agent =~ /^UP.Browser/i){
$Form{'btype'} = 'ezweb';
$AddressKey = 'accesskey';
@Number = ("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]","[8]","[9]","[*]",'[#]');
$Hr = '
';
$Br = '
';
$Method = 'post';
$httpReferer = $momocoURL;
$momocoURL = './momoco.cgi';
print "Location: $ezweb_pdxURL/ezweb.cgi","\n\n";
} elsif ($Form{'btype'} eq 'docomo' || $agent =~ m#^DoCoMo/#i || $agent =~ m#^Lmode/#i) {
$Form{'btype'} = 'docomo';
$AddressKey = 'accesskey';
@Number = ("\&\#63888\;","\&\#63879\;","\&\#63880\;","\&\#63881\;","\&\#63882\;",
"\&\#63883\;","\&\#63884\;","\&\#63885\;","\&\#63886\;","\&\#63887\;","[*]",'[#]');
$Hr = '
';
$Br = '
';
$Method = 'post';
if($agent =~ m#^DoCoMo.*P\d{3}i#i){
$httpReferer = $momocoURL;
} else {
$httpReferer = $momocoURL;
$momocoURL = './momoco.cgi';
}
} elsif ($Form{'btype'} eq 'astel' || $agent =~ m#^ASTEL/#i ) {
$Form{'btype'} = 'astel';
$AddressKey = 'accesskey';
@Number = ("\&\#63888\;","\&\#63879\;","\&\#63880\;","\&\#63881\;","\&\#63882\;",
"\&\#63883\;","\&\#63884\;","\&\#63885\;","\&\#63886\;","\&\#63887\;","[*]",'[#]');
$Hr = '
';
$Br = '
';
$Method = 'post';
$httpReferer = $momocoURL;
$momocoURL = './momoco.cgi';
} elsif ($Form{'btype'} eq 'pdx' || $agent =~ m#^PDXGW/#i){
$Form{'btype'} = 'pdx';
$ezweb_pdxURL =~ s/http://g;
print "Content-Type:text/plain";
print "\n\n";
print "Subject: $BoardTitle","\n";
print "From: $ezweb_pdxURL/pdx.cgi","\n";
print "Content-Type: text/plain";
print "\n\n";
print &jcode::sjis("¡PDXÈÇ",'euc');
print "[$BoardTitle]";
print &jcode::sjis("¤Ø",'euc');
exit;
} elsif ($Form{'btype'} eq 'pc' || $agent =~ /msie/i || $agent =~ /mozilla/i){
$Form{'btype'} = 'pc';
$AddressKey = 'accesskey';
undef @Number;
$Hr = '
';
$Br = '
';
$Method = 'post';
$httpReferer = $momocoURL;
$momocoURL = './momoco.cgi';
} else {
$Form{'btype'} = '';
$httpReferer = $momocoURL;
$HtmlDirectory = "./htmls";
&Error(&jcode::sjis('µ¡¼ï¼«Æ°È½Ê̼ºÇÔ','euc'),__LINE__);
}
$YourHomepage{'wap20'} = $YourHomepage{'docomo'} if(!$YourHomepage{'wap20'});
$YourHomepage = $YourHomepage{$Form{'btype'}};
$HtmlDirectory = "./htmls/$Form{'btype'}";
}
;# ----------------------------------------------------------------- #
;# ¥Õ¥©¡¼¥à¤«¤é¤Î¥Ç¡¼¥¿¼èÆÀ
sub GetData{
my($qs,$cl,$key,$chk,$value,$tmp);
if($ENV{'REQUEST_METHOD'} eq 'GET'){
$qs = $ENV{'QUERY_STRING'};
$cl = $ENV{'CONTENT_LENGTH'};
}
else{
$cl = $ENV{'CONTENT_LENGTH'};
read(STDIN,$qs,$cl);
}
for(split(/&/,$qs)){
($key, $value) = split(/=/);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$Form{$key} = $value;
}
}
;# ----------------------------------------------------------------- #
;# ÆþÎϥǡ¼¥¿À°·Á/À©¸Â
sub MoldData{
my($md) = $_[0];
$Form{'mode'} =~ s/[^a-z]//ig;
$Form{'btype'} =~ s/[^a-z|^0-9]//ig;
$Form{'page'} =~ s/[^0-9]//g;
$Form{'file'} =~ s/[^0-9]//g;
if($md){
$Form{'name'} =~ s/\n//g;
$Form{'name'} =~ s/\r//g;
$Form{'mail'} =~ s/\n//g;
$Form{'mail'} =~ s/\r//g;
$Form{'title'} =~ s/\n//g;
$Form{'title'} =~ s/\r//g;
$Form{'topicpassword'} =~ s/\n//g;
$Form{'topicpassword'} =~ s/\r//g;
$Form{'commentpassword'} =~ s/\n//g;
$Form{'commentpassword'} =~ s/\r//g;
if($AddressFilter eq 'yes'){
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@docomo\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@ezweb\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@.{0,5}\.ezweb\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@.{0,5}\.ido\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@cmail\.ido\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@email\.sky\.tdp\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@email\.sky\.kdp\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@email\.sky\.cdp\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@jp-.\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@.{0,5}\.sky\.tu-ka\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@.{0,5}\.sky\..{3}\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@cara\.tu-ka\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@.{0,5}pdx\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@phone\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@.{0,5}\.mozio\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@mopera\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}\@em\.nttpnet\.ne\.jp//ig;
$Form{'mail'} =~ s/0[9|7]0[0-9]{8}//ig;
}
;# Cookie»þ¡¢Ì¾Á°¤È¥¢¥É¥ì¥¹¤Î°ìÃ×Âкö¡Ê¥Ð¥°²óÈò¡Ë
if($UseCookie eq 'yes' && $Form{'name'} =~ /^\d*$/ && $Form{'name'} eq $Form{'mail'}){
if($Form{'mode'} eq 'newtopic' || $Form{'mode'} eq 'newcomment'){
&Error(&jcode::sjis('̾Á°¤È¥á¡¼¥ë¥¢¥É¥ì¥¹¤ÏÊ̤Êʸ»úÎó¤Ë¤·¤Æ²¼¤µ¤¤¡£','euc'));
exit;
}
}
;# ²þ¹Ô¤Î½üµîsjis¤Ø¤ÎÊÑ´¹¤Èʸ»ú¤ÎÃÖ´¹
foreach(keys %Form){
$Form{$_} =~ s/\r\n/\n/g;
$Form{$_} =~ s/\r/\n/g;
&jcode::convert(\$Form{$_},'sjis') if($Jcode eq 'yes');
$Form{$_} = &jcode::sjis($Form{$_},'sjis','h') if($Kana eq '1');
$Form{$_} = &jcode::sjis($Form{$_},'sjis','z') if($Kana eq '2');
$Form{$_} =~ s/\t/ /g;
$Form{$_} =~ s/\&/\&\;/g;
$Form{$_} =~ s/\<\;/g;
$Form{$_} =~ s/>/\>\;/g;
$Form{$_} =~ s/\"/\"\;/g;
;# J-Sky ¤Î¥Ð¥«
$Form{$_} =~ s/\e(\$((?:[EFG]([!-z])+)+)\x0f)/<>$1/g if($_ ne 'mail');
$Form{$_} =~ s/\e(\$((?:[EFG]([!-z])+)+)\x0f)//g if($_ eq 'mail');
$Form{$_} =~ s/\e//g;
}
my(@mark) = &Euc2SjisMark('¡¢','¡£');
chomp $Form{'comment'};
$Form{'comment'} =~ s/\r//g;
$Form{'comment'} =~ s/\n/\e/g;
if($Form{'kaigyou'}){
$Form{'comment'} =~ s/(($mark[0])+)/$1\e/g;
$Form{'comment'} =~ s/(($mark[1])+)/$1\e/g;
}
$Form{'comment'} =~ s/\e{2,}/\e\e/g;
$Form{'comment'} =~ s/\e*$//g;
}
}
;# ----------------------------------------------------------------- #
;# ³¨Ê¸»úÊÑ´¹
sub Data2Emoji{
my($value,$type) = ($_[0],$_[1]);
my($re_ascii) = '[\x00-\x7F]';
my($re_sjis_c) = '[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]';
my($re_sjis_kana) = '[\xA1-\xDF]';
my($re_emoji) = '\xF8[\x9F-\xFC]|\xF9[\x40-\x49\x72-\x7E\x80-\xB0]';
$value =~ s/<>/\e/g if($type eq 'jphone');
$value =~ s/\<\;(img icon=[^=]*?)\>\;/<$1>/ig if($type eq 'ezweb');
$value =~ s/\<\;(\#[^=]*?)\>\;/<$1>/ig if($type eq 'pdx');
$value =~ s/<>\$((?:[EFG]([!-z])+)+)\x0f/(j)/ig if($type eq 'all' || $type ne 'jphone');
$value =~ s/\<\;(img icon=[^=]*?)\>\;/(e)/ig if($type eq 'all' || $type ne 'ezweb');
$value =~ s/\<\;(\#[^=]*?)\>\;/(p)/ig if($type eq 'all' || $type ne 'pdx');
$value =~ s/\G((?:$re_ascii|$re_sjis_c|$re_sjis_kana)*?)(?:$re_emoji)/$1(i)/g
if($type eq 'all' || $type ne 'docomo' && $type ne 'astel' && $type ne 'wap20');
$value =~ s/\G((?:[\x80-\x9f\xe0-\xf7\xfa-\xfc][\x40-\xff]|[\x00-\x7f])*?)([\xf8\xf9][\x40-\xff]|[\xf0-\xf4][\x40-\xff])/$1(i)/g
if($type eq 'all' || $type ne 'astel' && $type ne 'docomo' && $type ne 'wap20');
;# ezwebÍÑʸ»ú»²¾È
$value =~ s/\$/\&dol\;/g if($type eq 'ezweb');
return $value;
}
;# ----------------------------------------------------------------- #
;# HTML¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹ÍÑʸ»úÎó
sub HtmlChar{
@Htmlchar = &Euc2SjisMark(
'Á°','¼¡','Á°¤Î¥Ú¡¼¥¸','¼¡¤Î¥Ú¡¼¥¸','[λ]',
'¿·µ¬ºîÀ®','¥³¥á¥ó¥È¤¹¤ë','¾¤Î·Ç¼¨ÈĤØGO!','²áµî¥í¥°','¢£Åê¹Æ¥Ñ¥¹¥ï¡¼¥É',
'¡¢','¡£','¡¡','¥³¥á¥ó¥Èºï½ü','Á´ÁªÂò',
'ÁªÂò²ò½ü','°ìÈÌ¥á¥Ë¥å¡¼','ºÇ½é¤«¤éɽ¼¨','ºÇ¿·','·ïɽ¼¨',
'¥È¥Ô¥Ã¥¯°ìÍ÷','¥³¥á¥ó¥Èɽ¼¨','´ÉÍý','¸¡º÷','2chÉ÷ɽ¼¨','¥Õ¥ì¡¼¥àɽ¼¨',
'¢¤','¢¦','¥³¡¼¥É');
}
sub Euc2SjisMark{
my(@mark,$c);
@mark = @_;
for($c = 0;$c < scalar(@mark);$c += 1){
&jcode::euc2sjis(\$mark[$c]);
}
return @mark;
}
;# ----------------------------------------------------------------- #
;# topics¥Õ¥¡¥¤¥ë¤«¤é¤Î¥Ç¡¼¥¿½èÍý
sub TopicsFile{
my(@md) = @_;
if($md[0] eq 'r'){
my($retry);
for($retry = 0;$retry < 10;$retry++){
unless($lfh = &Plock(basename=>plock_tp)){
if($retry < 10){
next;
} else {
&Punlock($lfhp);
&Error(&jcode::sjis('º®»¨¤·¤Æ¤¤¤Þ¤¹¡£¾¯¤·ÂԤäƤ«¤éºÆÅٻ¤Æ¤¯¤À¤µ¤¤¡£','euc'),__LINE__);
}
} else {
last;
}
}
my($c) = 0;
my($line,%tp,%tps,$tdate,$cdate,$update,$key,$stop);
while(!open(TOPICS,"$DataDirectory/topics")){
$c += 1;
if($Harumi eq 'yes' && $c <= 10){
&Harumi();
}
else{
&Punlock($lfhp);
&Punlock($lfh);
&Error("File Error(topics)",__LINE__);
}
}
while($line =