#!/usr/bin/perl #******************************************************************** # システム名 : for UNIX / FreeWare * # サブシステム名 : Module * # ソースファイル名: index.pl * # カテゴリー : Perl Mudule * # エディター : S.Mizutani * #-------------------------------------------------------------------* # 名称 : 雅SEO相互リンク Version 1.02 * # URL : http://tool.miyabi-seo.com/ * # E-Mail : miyabi.seo@gmail.com * #-------------------------------------------------------------------* # Copyright(c)2007-2008 Miyabi CGI Tools All Right Reserved. * #******************************************************************** $SystemVersion = '1.02'; #===================================================================* # Include Module * #===================================================================* $ProgramPath = './'; $HomePath = './'; #-------------------------------* # Require Module * #-------------------------------* require $ProgramPath.'project/Setup/ConstantValue.pl'; # 定数設定モジュール require $ProgramPath.'project/Inspection/Parameter.pl'; # 引数検査モジュール require $ProgramPath.'project/Output/Display.pl'; # HTML出力モジュール #===================================================================* # Set Param * #===================================================================* #-------------------------------* # 管理用変数 * #-------------------------------* $MvSubTitle = 'タイ関連サイトリンク集,バンコク,チェンマイ,プーケット等、カテゴリー別タイリンク集'; # 相互リンクタイトル $MvDataFile = $ProgramPath.'data/datafile.tsv'; # データファイル #-------------------------------* # 動作設定 * #-------------------------------* $MvMailSend = 1; # 登録通知メール [ 1:ON / 0:OFF ] $MvLinkCheck = 1; # 相互リンクチェック [ 1:ON / 0:OFF ] $MvThumbnails = 1; # サムネイル画像 [ 1:ON / 0:OFF ] #-------------------------------* # Input Data * #-------------------------------* %CvIndata = &Inspection_Parameter_Get; #-------------------------------* # カテゴリ定義 * #-------------------------------* @MvCategory = ( "全て表示", "タイ総合", "バンコク総合", "チェンマイ", "プーケット", "サムイ島", "パタヤ", "タオ島", "パンガン島", "チェンライ", "クラビ", "食事・レストラン", "タイ語", "旅行記", "ナイトライフ", "施設・アクティビティー", "アクティビティー", "その他", ); #===================================================================* # Deny Param * #===================================================================* #-------------------------------* # 制限ホスト * #-------------------------------* @DenyHost = ( 'anonymizer', 'cache' ); #-------------------------------* # 制限テキスト * #-------------------------------* @DenyText = ( '風俗', '死ね', '殺す', '調教', '奴隷', '無修正', ); #-------------------------------* # 制限URL * #-------------------------------* @DenyUrl = ( 'fuck', 'adult', 'fetich', 'stripper' ); #===================================================================* # Main * #===================================================================* my($HtmlText) = ''; my($InCategory) = $MvCategory[($CvIndata{'Category'} - 10)] if ($CvIndata{'Category'} > 10); my($PageTitle) = $CvSiteTitle; $PageTitle .= '|'.$MvSubTitle if (defined $MvSubTitle); $PageTitle .= ' 【'.$InCategory.'】' if (defined $InCategory); #-------------------------------* if ($CvIndata{'mode'} eq 'html') { $HtmlText .= &Output_File_Html($ProgramPath.'html/'.$CvIndata{'fn'}); } else { if ($CvIndata{'mode'} eq 'admin') { if ($CvIndata{'process'} eq 'check') { my($ErrorMsg) = ''; $ErrorMsg = '入力エラー,サイトURL : URLの書式が不正です' if ($CvIndata{'URL'} !~ /^http:\/\/(?:[a-zA-Z0-9-_.]+).*$/); unless ($ErrorMsg) { #-------------------------------* # データ読込 * #-------------------------------* if (open(FILE, "grep -E '\t".$CvIndata{'URL'}."\t' $MvDataFile|")) { my(@Array) = ; close(FILE); #-------------------------------* if (defined @Array) { @Array = split(/\t/, $Array[0]); if ($CvIndata{'request'} eq 'edit') { $HtmlText .= &Output_Html_EditForm($Array[1]); } elsif ($CvIndata{'request'} eq 'delete') { $HtmlText .= &Output_Html_DeleteForm($Array[1]); } } else { $ErrorMsg = '入力エラー,サイトURL : 該当データが見つかりません。'; } } else { $ErrorMsg = 'システムエラー,データファイルを開けません。'; } } if ($ErrorMsg) { $HtmlText .= &Output_Html_Text($ErrorMsg); $HtmlText .= &Output_Html_AdminForm; } } else { $HtmlText .= &Output_Html_AdminForm; } } elsif (($CvIndata{'mode'} eq 'delete') && $CvIndata{'id'}) { my($ErrorMsg) = ''; if ($CvIndata{'process'} eq 'check') { $ErrorMsg = &Inspection_Param_Password($CvIndata{'password'},6,$CvPassword); $HtmlText .= ((!$ErrorMsg) && (&Output_File_Delete($CvIndata{'id'}))) ? &Output_Html_Text('処理完了,データを削除致しました。') : &Output_Html_Text('入力エラー,パスワード : '.$ErrorMsg); } else { $HtmlText .= &Output_Html_DeleteForm($CvIndata{'id'}); } } elsif (($CvIndata{'mode'} eq 'edit') && $CvIndata{'id'}) { if ($CvIndata{'process'} eq 'check') { my($ErrorMsg) = ''; my(@RtnArray) = &Inspection_ParamCheck(0); push(@RtnArray, '入力エラー,パスワード : '.$ErrorMsg) if ($ErrorMsg = &Inspection_Param_Password($CvIndata{'password'},6,$CvPassword)); unless (@RtnArray) { &Output_File_Delete($CvIndata{'id'}); $HtmlText .= &Output_Html_Text(&Output_File_InputData); } else { $HtmlText .= &Output_Html_Text(@RtnArray); $HtmlText .= &Output_Html_EditForm($CvIndata{'id'}); } } else { $HtmlText .= &Output_Html_EditForm($CvIndata{'id'}); } } elsif ($CvIndata{'mode'} eq 'regist') { my(@RtnArray) = &Inspection_ParamCheck(1); unless (@RtnArray) { $HtmlText .= &Output_Html_Text(&Output_File_InputData); } else { $HtmlText .= &Output_Html_Text(@RtnArray); $HtmlText .= &Output_Html_RegistForm; } } else { $HtmlText .= &Output_Html_RegistForm; } $HtmlText .= &Output_Html_ReadData; } #-------------------------------* # HTML Header * #-------------------------------* &Output_Display_Common_Header($PageTitle); &Output_Html_Header; #-------------------------------* print $HtmlText; #-------------------------------* # HTML Footer * #-------------------------------* &Output_Html_Footer; &Output_Display_Common_Footer; exit; #===========================================================================* # プログラム名 : メール送信 * # プログラムID : Action_MailSend * # 使用例 : &Action_MailSend; * #===========================================================================* sub Action_MailSend { #-------------------------------* # メール送信処理 * #-------------------------------* return 1 unless (open(OUT,"| $sendmail -t")); #-------------------------------# # メールヘッダ出力 # #-------------------------------# &Output_Mail_Header($MvSubTitle.'登録通知 - '.$CvSiteTitle,$CvMailHandle,$MvSubTitle.' Admin',$CvMailHandle); #-------------------------------* # 本文形成 * #-------------------------------* foreach (@_) { print OUT &$jcnv(\$_, 'jis'); } close(OUT); #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return; } #===========================================================================* # プログラム名 : Mailヘッダー出力 * # プログラムID : Output_Mail_Header * # 使用例 : &Output_Mail_Header($_[0],$_[1],$_[2]); * #---------------------------------------------------------------------------* # 入力引数[0] : Subject * # 入力引数[1] : From Mail Address * # 入力引数[2] : From Name * # 入力引数[3] : To Mail Address * #---------------------------------------------------------------------------* # 出力引数[0] : なし * #===========================================================================* sub Output_Mail_Header { #-------------------------------* # 変数宣言 * #-------------------------------* my($mySubject) = &Encode_Mail_Base64($_[0]); my($myMailFrom) = ($_[2]) ? &Encode_Mail_Base64($_[2])."\<".$_[1]."\>" : $_[1]; my($myMailTo) = ($_[3]) ? $_[3] : $CvMailHandle; #-------------------------------# # メールヘッダ出力 # #-------------------------------# print OUT "Return-Path: \<".$myMailTo."\>\n"; print OUT "From: ".$myMailFrom."\n"; print OUT "To: ".$myMailTo."\n"; print OUT "Subject: ".$mySubject."\n"; #-------------------------------# print OUT "MIME-Version: 1.0\n"; print OUT "Content-Type: text/plain\; charset=iso-2022-jp\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT "X-Priority: 3\n"; print OUT "X-MSMail-Priority: Normal\n"; print OUT "\n"; } #===========================================================================* # プログラム名 : ファイルデータ書込 * # プログラムID : Output_File_ColumnData * # 使用例 : &Output_File_ColumnData('***.tsv','DATA'); * #---------------------------------------------------------------------------* # 入力引数[0] : データファイル名 * # 入力引数[1] : 書込内容 * #===========================================================================* sub Output_File_ColumnData { #-------------------------------* # 処理 * #-------------------------------* return if (!open FILE,">>$_[0]"); flock(FILE, 2); # lock seek(FILE, 0, 2); # pointer set print FILE $_[1]."\n"; close FILE; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return 1; } #===========================================================================* # プログラム名 : 重複チェック * # プログラムID : Inspection_File_Overlap * # 使用例 : &Inspection_File_Overlap($_[0],$_[1]); * #---------------------------------------------------------------------------* # 入力引数[0] : 検索キーワード * # 入力引数[1] : データファイル名 * #===========================================================================* sub Inspection_File_Overlap { #-------------------------------* # 変数宣言 * #-------------------------------* my($SearchKey) = "\t".$_[0].".*"; #-------------------------------* # 処理 * #-------------------------------* return if (!open(FILE, "grep -E '$SearchKey' $_[1]|")); while () { chomp; return 1 if ($_ =~ /$SearchKey/i); } close FILE; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return; } #===========================================================================* # プログラム名 : 文字数検査 * # プログラムID : Inspection_Param_TextLength * # 使用例 : &Inspection_Param_TextLength($_[0],$_[1],$_[2]); * #---------------------------------------------------------------------------* # 入力引数[0] : 検査文字 * # 入力引数[1] : 規定文字数 * # 入力引数[2] : StrMode (0:指定なし 1:英数字) * #===========================================================================* sub Inspection_Param_TextLength { #-------------------------------* # 処理 * #-------------------------------* return '入力必須項目です' unless ($_[0]); if ($_[2] == 1) { return '半角英数字以外の文字が含まれています' if ($_[0] !~ /^[\w]+$/); return $_[1].'文字以上入力して下さい' if (length($_[0]) < $_[1]); } else { return '書式が不正です' if (length($_[0]) < $_[1]); } #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return; } #===========================================================================* # プログラム名 : パスワード検査 * # プログラムID : Inspection_Param_Password * # 使用例 : &Inspection_Param_Password($_[0],$_[1],$_[2]); * #---------------------------------------------------------------------------* # 入力引数[0] : パスワード * # 入力引数[1] : 規定文字数 * # 入力引数[2] : 合致検査パスワード * #===========================================================================* sub Inspection_Param_Password { #-------------------------------* # 処理 * #-------------------------------* return '入力必須項目です' unless ($_[0]); return 'パスワードの書式が不正です' if ($_[0] !~ /^[a-zA-Z0-9]+$/); return $_[1].'文字以上入力して下さい' if (length($_[0]) < $_[1]); return 'パスワードが違います' if (($_[2]) && ($_[0] ne $_[2])); #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return; } #===========================================================================* # プログラム名 : URL検査 * # プログラムID : Inspection_Param_Url * # 使用例 : &Inspection_Param_Url($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : 検査URL * #===========================================================================* sub Inspection_Param_Url { #-------------------------------* # 処理 * #-------------------------------* return 'URLの書式が不正です' if ($_[0] !~ /^http:\/\/(?:[a-zA-Z0-9-_.]+).*$/); return 'URLに接続できません' unless (&Inspection_Existence_Url($_[0])); #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return; } #===========================================================================* # プログラム名 : URL存在確認 * # プログラムID : Inspection_Existence_Url * # 使用例 : &Inspection_Existence_Url($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : URL * #===========================================================================* sub Inspection_Existence_Url { #-------------------------------* # モジュール使用宣言 * #-------------------------------* use LWP::Simple; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return get($_[0]); } #===========================================================================* # プログラム名 : 総数取得 * # プログラムID : Read_File_Sum * # 使用例 : &Read_File_Sum($_[0],$_[1]); * #---------------------------------------------------------------------------* # 入力引数[0] : データファイル名 * # 入力引数[1] : 検索キーワード * #---------------------------------------------------------------------------* # 出力引数[0] : 総数 * #===========================================================================* sub Read_File_Sum { #-------------------------------* # 変数宣言 * #-------------------------------* my($Cnt) = 0; #-------------------------------* # 処理 * #-------------------------------* return if (!open(FILE, "grep -E '^$_[1]' $_[0]|")); while() { $Cnt++; } close FILE; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return $Cnt; } #===========================================================================* # プログラム名 : HTMLソース取得 * # プログラムID : Socket_Get_HtmlSource * # 使用例 : &Socket_Get_HtmlSource($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : URL * #===========================================================================* sub Socket_Get_HtmlSource { #-------------------------------* # モジュール使用宣言 * #-------------------------------* use LWP::UserAgent; use HTTP::Request; #-------------------------------* # 変数宣言 * #-------------------------------* my($RtnValue) = ''; # 戻り値用変数 #-------------------------------* # 処理 * #-------------------------------* return unless (&Inspection_Existence_Url($_[0])); my($ua) = new LWP::UserAgent; my($request) = new HTTP::Request('GET', $_[0]); my($response) = $ua->request($request); $RtnValue = $response->content if ($response->is_success); #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return &$jcnv(\$RtnValue, $ENV{'CHAR_CODE'}); } #===========================================================================* # プログラム名 : 文字コード変換 * # プログラムID : Encode_Mail_Base64 * # 使用例 : &Encode_Mail_Base64('文字列'); * #---------------------------------------------------------------------------* # 入力引数[0] : 文字列 * #---------------------------------------------------------------------------* # 出力引数[0] : 文字列(文字コード : JIS) * #===========================================================================* sub Encode_Mail_Base64 { #-------------------------------* # 変数宣言 * #-------------------------------* my($RecValue) = $_[0]; my($RtnValue, $Cnt, $i); my($Base) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" . "abcdefghijklmnopqrstuvwxyz" . "0123456789+/"; #-------------------------------* # 処理 * #-------------------------------* return unless ($RecValue); $RecValue = &$jcnv(\$RecValue, 'jis'); $RecValue =~ s/\x1b\x28\x42/\x1b\x28\x4a/g; $RecValue = unpack("B*", $RecValue); for ($i = 0; $Cnt = substr($RecValue, $i, 6); $i += 6) { $RtnValue .= substr($Base, ord(pack("B*", "00" . $Cnt)), 1); if (length($Cnt) == 2) { $RtnValue .= "=="; } elsif (length($Cnt) == 4) { $RtnValue .= "="; } } #-------------------------------* # 戻り値処理 * #-------------------------------* return ("=?iso-2022-jp?B?".$RtnValue."?="); } #===========================================================================* # プログラム名 : データ登録 * # プログラムID : Output_File_InputData * # 使用例 : &Output_File_InputData; * #===========================================================================* sub Output_File_InputData { #-------------------------------* # 変数宣言 * #-------------------------------* my(@RtnArray) = (); #-------------------------------* # データ登録 * #-------------------------------* &Output_File_ColumnData($MvDataFile,$CvIndata{'Category'}."\t".$CvTimeCode."\t".$CvIndata{'Title'}."\t".$CvIndata{'URL'}."\t".$CvIndata{'Exp'}."\t".$CvIndata{'sURL'}."\t"); if ($MvMailSend) { #-------------------------------* # 変数宣言 * #-------------------------------* my(@MailText) = (); #-------------------------------* push(@MailText,"*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n"); push(@MailText,$MvSubTitle." 登録通知\n"); push(@MailText,"*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=\n"); push(@MailText,"\n"); push(@MailText,"登録日 : ".$CvDataNow."\n"); push(@MailText,"\n"); push(@MailText,"サイト名 : ".$CvIndata{'Title'}."\n"); push(@MailText,"サイトURL : ".$CvIndata{'URL'}."\n"); push(@MailText,"サイト紹介文 : ".$CvIndata{'Exp'}."\n"); push(@MailText,"\n"); push(@MailText,"相互リンク先URL : ".$CvIndata{'sURL'}."\n"); push(@MailText,"\n"); push(@MailText,"------------------------------------------------------\n"); push(@MailText,"このメールは".$MvSubTitle."システムが送信しています。\n"); push(@MailText,"\n"); push(@MailText,"────────────────────────\n"); push(@MailText,"IP Address : ".$ENV{'REMOTE_ADDR'}."\n"); if ($ENV{'REMOTE_HOST'} !~ /[^0-9\.]/) { @_ = split(/\./, $ENV{'REMOTE_ADDR'}); $ENV{'REMOTE_HOST'} = gethostbyaddr(pack("C4", $_[0], $_[1], $_[2], $_[3]), 2); push(@MailText,"Remote Host : ".$ENV{'REMOTE_HOST'}."\n") if ($ENV{'REMOTE_HOST'}); } push(@MailText,"User Agent : ".$ENV{'HTTP_USER_AGENT'}."\n"); #-------------------------------* push(@RtnArray,'システムエラー,SENDMAILの設定に誤りがあります。') if (&Action_MailSend(@MailText)); } else { push(@RtnArray,'登録完了,サイトの登録が無事完了しました。'); } #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return @RtnArray; } #===========================================================================* # プログラム名 : 入力情報確認 * # プログラムID : Inspection_ParamCheck * # 使用例 : &Inspection_ParamCheck($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : 制限事項 [ 0 : 無 / 1 : 有 ] * #===========================================================================* sub Inspection_ParamCheck { #-------------------------------* # 変数宣言 * #-------------------------------* my($ErrorMsg) = ''; my(@RtnArray) = (); #-------------------------------* # 登録規制チェック * #-------------------------------* if ($_[0] == 1) { my($UserHost) = $ENV{'REMOTE_HOST'}; unless ($UserHost) { $UserHost = gethostbyaddr(pack("C4",split(/\./,$ENV{'REMOTE_ADDR'})),2); $UserHost = $ENV{'REMOTE_ADDR'}; } foreach (@DenyHost) { push(@RtnArray,'登録規制,貴方の登録は制限されています。') if ($UserHost =~ /$_/i); } #-------------------------------* if ($CvIndata{'URL'} =~ /^http/i) { foreach (@DenyUrl) { push(@RtnArray,'登録規制,御記入頂いたURLは登録制限されています。') if ($CvIndata{'URL'} =~ $_); } push(@RtnArray,'登録規制,二重登録はできません。') if (&Inspection_File_Overlap($CvIndata{'URL'},$MvDataFile)); if ($CvIndata{'sURL'} =~ /^http/i) { if ($CvIndata{'sURL'} !~ /^$CvIndata{'URL'}/i) { push(@RtnArray,'登録規制,無効なURLに相互リンクが設置されています。'); } else { my($Html) = &Socket_Get_HtmlSource($CvIndata{'sURL'}); push(@RtnArray,'登録規制,リンクを貼ってからご登録下さい。') if ($Html !~ /$CvSiteURL/i); } } } } #-------------------------------* # 入力エラーチェック * #-------------------------------* push(@RtnArray,'入力エラー,サイト名 : '.$ErrorMsg) if ($ErrorMsg = &Inspection_Param_TextLength($CvIndata{'Title'},2,0)); push(@RtnArray,'入力エラー,サイトURL : '.$ErrorMsg) if ($ErrorMsg = &Inspection_Param_Url($CvIndata{'URL'})); push(@RtnArray,'入力エラー,相互リンク先URL : '.$ErrorMsg) if ($ErrorMsg = &Inspection_Param_Url($CvIndata{'sURL'})); #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return @RtnArray; } #===========================================================================* # プログラム名 : 削除処理 * # プログラムID : Output_File_Delete * # 使用例 : &Output_File_Delete($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : データコード * #===========================================================================* sub Output_File_Delete { #-------------------------------# # 変数宣言 # #-------------------------------# my($SearchKey) = $_[0]; my(@Array) = (); #-------------------------------# # データをキャッシュに読込む # #-------------------------------# return if (!open(FILE, "grep -v -E '\t".$SearchKey."\t' $MvDataFile|")); @Array = ; close(FILE); #-------------------------------# # データ書込 # #-------------------------------# return if (!open FILE,"+< $MvDataFile"); flock(FILE, 2); # lock seek(FILE, 0, 0); # pointer set foreach (@Array) { print FILE $_; } truncate(FILE, tell(FILE)); # File size set close FILE; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return 1; } #===========================================================================* # プログラム名 : ファイルデータ読込 * # プログラムID : Output_File_Html * # 使用例 : &Output_File_Html($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : ファイルパス * #===========================================================================* sub Output_File_Html { #-------------------------------* # 変数宣言 * #-------------------------------* my($RtnValue); # 戻り値用変数 #-------------------------------* # ファイル読込 * #-------------------------------* return if (!open(FILE, $_[0])); $RtnValue = join('', ); close FILE; #-------------------------------* # データ整形 * #-------------------------------* $RtnValue =~ s/タイランドリンク.net タイ総合情報リンク集/$CvSiteTitle/go; $RtnValue =~ s/http://www.thailandlink.net/$CvSiteURL/go; $RtnValue =~ s/タイ総合情報リンク集、バンコク、チェンマイ、プーケット、サムイ島等、タイの総合情報/$CvMetaDescription/go; $RtnValue =~ s/タイ関連サイトリンク集,バンコク,チェンマイ,プーケット等、カテゴリー別タイリンク集/$MvSubTitle/go; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return $RtnValue; } #===========================================================================* # プログラム名 : 内容表示 * # プログラムID : Output_Html_Text * # 使用例 : &Output_Html_Text(@Array); * #---------------------------------------------------------------------------* # 入力配列 : エラー内容 * #===========================================================================* sub Output_Html_Text { #-------------------------------* # 変数宣言 * #-------------------------------* my($RtnValue) = ''; my($Subject) = ''; #-------------------------------* $RtnValue .= "
\n"; foreach (@_) { my(@Array) = split(/\,/, $_); if ($Subject ne $Array[0]) { $Subject = $Array[0]; $RtnValue .= "
".$Array[0]."
\n"; } $RtnValue .= "
".$Array[1]."
\n"; } $RtnValue .= "
\n"; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return $RtnValue; } #===========================================================================* # プログラム名 : データ表示 * # プログラムID : Output_Html_ReadData * # 使用例 : &Output_Html_ReadData; * #===========================================================================* sub Output_Html_ReadData { #-------------------------------* # 変数宣言 * #-------------------------------* my($RtnValue) = ''; # 戻り値用変数 my($myCategory) = ($InCategory) ? $InCategory : '相互リンク'; my($SearchKey) = ($CvIndata{'Category'} > 10) ? $CvIndata{'Category'} : ".+"; $SearchKey = "^".$SearchKey."\t"; #-------------------------------* # 処理 * #-------------------------------* $RtnValue .= "

".$InCategory."登録サイト

\n"; $RtnValue .= "

新着 10件迄を表\示しています。

\n" unless ($InCategory); #-------------------------------* # データ読込処理 * #-------------------------------* if (open(FILE, "grep -E '$SearchKey' $MvDataFile|")) { my($DataCnt) = 0; $RtnValue .= "\n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n" if ($MvThumbnails); $RtnValue .= " \n"; $RtnValue .= " \n" unless ($CvIndata{'Category'}); $RtnValue .= " \n"; foreach (reverse()) { next if /^\D/; @_ = split(/\t/, $_); $RtnValue .= " \n"; $RtnValue .= " \n" if ($MvThumbnails); $RtnValue .= " \n"; $RtnValue .= " \n" unless ($CvIndata{'Category'}); $RtnValue .= " \n"; $DataCnt++; last if (($DataCnt > 10) && (!$CvIndata{'Category'})); } close(FILE); $RtnValue .= " \n"; $RtnValue .= "
".$myCategory."
キャプチャサイト情報カテゴリ
\"\"\n"; $RtnValue .= "
\n"; $RtnValue .= "
".$_[2].""; $RtnValue .= " \"".$_[2]."\"" if ($MvLinkCheck); $RtnValue .= "
\n"; $RtnValue .= "
".$_[4]."
\n"; $_[3] = substr($_[3],0,38)."..." if (length($_[3]) > 38); $RtnValue .= "
".$_[3]."
\n"; $RtnValue .= "
\n"; $RtnValue .= "
".$MvCategory[($_[0] - 10)]."
\n"; } else { $RtnValue .= "

まだ登録されていません。

\n"; $RtnValue .= "

リンク集に登録したい方は当サイトへのリンク完了後、登録フォームよりご登録下さい。

\n"; } #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return $RtnValue; } #===========================================================================* # プログラム名 : データ登録フォーム表示 * # プログラムID : Output_Html_RegistForm * # 使用例 : &Output_Html_RegistForm; * #===========================================================================* sub Output_Html_RegistForm { #-------------------------------* # 変数宣言 * #-------------------------------* my($RtnValue) = ''; # 戻り値用変数 my($myCategory) = ($InCategory) ? $InCategory : '相互リンク'; #-------------------------------* # 処理 * #-------------------------------* $RtnValue .= "
\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= " \n"; $RtnValue .= " \n"; if ($CvIndata{'Category'} > 10) { $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; } $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; if ($CvIndata{'Category'} <= 10) { $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; } $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= "
".$myCategory."登録
".$MvCategory[($CvIndata{'Category'} - 10)]."」 カテゴリに登録します。
サイト名 (25字以内)
サイトURL (60字以内)
カテゴリ
サイト紹介文 (80字以内)
相互リンク先URL
\n"; $RtnValue .= " タグ : <a href="".$CvSiteURL."" target="_blank">".$CvSiteTitle."</a>
\n"; $RtnValue .= " ※ 「相互リンク先URL」にリンクが無い場合は登録出来ません。
\n"; $RtnValue .= "

\n"; $RtnValue .= "
\n"; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return $RtnValue; } #===========================================================================* # プログラム名 : データ削除フォーム表示 * # プログラムID : Output_Html_DeleteForm * # 使用例 : &Output_Html_DeleteForm($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : データコード * #===========================================================================* sub Output_Html_DeleteForm { #-------------------------------* # 変数宣言 * #-------------------------------* my($RtnValue) = ''; # 戻り値用変数 my($SearchKey) = $_[0]; my(@Array) = (); #-------------------------------* # データ読込 * #-------------------------------* return if (!open(FILE, "grep -E '\t".$SearchKey."\t' $MvDataFile|")); @Array = ; close(FILE); @_ = split(/\t/, $Array[0]); #-------------------------------* # 処理 * #-------------------------------* $CvIndata{'Category'} = $_[0]; #-------------------------------* $RtnValue .= "
\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= "
登録データ削除
カテゴリ".$MvCategory[($_[0] - 10)]."
サイト名".$_[2]."
サイトURL".$_[3]."
サイト紹介文".$_[4]."
管理者パスワード
\n"; $RtnValue .= "

\n"; $RtnValue .= "
\n"; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return $RtnValue; } #===========================================================================* # プログラム名 : データ編集フォーム表示 * # プログラムID : Output_Html_EditForm * # 使用例 : &Output_Html_EditForm($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : データコード * #===========================================================================* sub Output_Html_EditForm { #-------------------------------* # 変数宣言 * #-------------------------------* my($RtnValue) = ''; # 戻り値用変数 my($SearchKey) = $_[0]; my(@Array) = (); #-------------------------------* # データ読込 * #-------------------------------* return if (!open(FILE, "grep -E '\t".$SearchKey."\t' $MvDataFile|")); @Array = ; close(FILE); @_ = split(/\t/, $Array[0]); #-------------------------------* # 処理 * #-------------------------------* $CvIndata{'Category'} = $_[0]; $CvIndata{'Title'} = $_[2] unless ($CvIndata{'Title'}); $CvIndata{'URL'} = $_[3] unless ($CvIndata{'URL'}); $CvIndata{'Exp'} = $_[4] unless ($CvIndata{'Exp'}); $CvIndata{'sURL'} = $_[5] unless ($CvIndata{'sURL'}); #-------------------------------* $RtnValue .= "
\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= "
登録データ編集
サイト名 (25字以内)".$_[2]."
\n"; $RtnValue .= "
サイトURL (60字以内)".$_[3]."
\n"; $RtnValue .= "
カテゴリ".$MvCategory[($_[0] - 10)]."
\n"; $RtnValue .= "
サイト紹介文 (80字以内)".$_[4]."
\n"; $RtnValue .= "
相互リンク先URL".$_[5]."
\n"; $RtnValue .= "
管理者パスワード
\n"; $RtnValue .= "

\n"; $RtnValue .= "
\n"; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return $RtnValue; } #===========================================================================* # プログラム名 : データ管理フォーム表示 * # プログラムID : Output_Html_AdminForm * # 使用例 : &Output_Html_AdminForm($_[0]); * #---------------------------------------------------------------------------* # 入力引数[0] : なし * #===========================================================================* sub Output_Html_AdminForm { #-------------------------------* # 変数宣言 * #-------------------------------* my($RtnValue) = ''; # 戻り値用変数 #-------------------------------* # 処理 * #-------------------------------* $RtnValue .= "
\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= "\n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= " \n"; $RtnValue .= "
データ編集・削除
作業内容\n"; $RtnValue .= " \n"; $RtnValue .= "
登録サイトURL
\n"; $RtnValue .= "

\n"; $RtnValue .= "
\n"; #-------------------------------* # 戻り値用変数生成 * #-------------------------------* return $RtnValue; } #===========================================================================* # プログラム名 : HTMLヘッダー出力 * # プログラムID : Output_Html_Header * # 使用例 : &Output_Html_Header; * #===========================================================================* sub Output_Html_Header { #-------------------------------* # Html Image * #-------------------------------* print "
\n"; print "
\n"; print "

".$CvSiteTitle." / ".$MvSubTitle."

\n"; print "
\n"; print "

".$CvSiteTitle."".$MvSubTitle.""; print " > ".$MvCategory[($CvIndata{'Category'} - 10)] if ($CvIndata{'Category'}); print "

\n"; print "
\n"; } #===========================================================================* # プログラム名 : HTMLフッター出力 * # プログラムID : Output_Html_Footer * # 使用例 : &Output_Html_Footer; * #===========================================================================* sub Output_Html_Footer { #-------------------------------* # Html Image * #-------------------------------* print "
\n"; print "
\n"; print "

データ編集・削除

\n"; print "
    \n"; for (1 .. $#MvCategory) { my($CategoryNum) = $_ + 10; if ($CvIndata{'Category'} != $CategoryNum) { print "
  • ".$MvCategory[$_]." (".&Read_File_Sum($MvDataFile,"^".$CategoryNum."\t").")
  • \n"; } else { print "
  • ".$MvCategory[$_]." (".&Read_File_Sum($MvDataFile,"^".$CategoryNum."\t").")
  • \n"; } } print "
\n"; print "
\n"; print "
\n"; print "
\n"; print "\n"; print "
\n"; print "
Powered By 雅CGI Tools"; print " - CGI Script 雅SEO相互リンク Ver. ".$SystemVersion; print " - Thumbnails by Mozshot" if ($MvThumbnails); print "
\n"; print "
\n"; } 1;