#!/usr/bin/perl #Perlのパスを指定 #普通は、『#!/usr/bin/perl』or『#!/usr/local/bin/perl』を指定 #プロバイダによっては、『#!/usr/local/bin/perl5』の場合もあり。 ############################################### #このscriptの著作権は・・・ #HPサービス(hp@bird.to・mkc@intacc.ne.jp)に帰属しています。 #よって、改竄する事は許可しますが、著作権の表示は削除しないで下さい。 #また、このscriptによる如何なる損害も賠償しませんので・・・ #予め、ご了承下さい。 #尚、バグ情報などは、HPサービス(hp@bird.to)まで #お知らせ頂けると有難いです。 #また、利用にあたっては、HPサービス(http://hp.bird.to/)に従って下さい。 ####################使用方法###################### #一番上のPerlのパスを合わせて転送し、パーミッションを設定すれば・・・ #それで、使えるようになります。 #このCGIのカスタマイズは、ほとんどインターネット上で出来るように #作ってありますので、ファイル内容を、特に変更する必要はありません。 ####################変数設定###################### #(★☆)は、変更可能部分(よく分からない人は、変更しない事!!) #(★)は、変更しない方がいい部分 #(☆)は、変更した方がいい部分 # 管理人専用コマンドの暗証番号(秘密の暗号に書き換えて下さい)(☆) my $secret='3014'; # カスタマイズ用ファイル(★☆) my $custom_file='./DATA/greeting3_custom.cgi'; # データファイル名(★☆) my $data_file = './DATA/greeting3.cgi'; #このスクリプトのURL(フルパスで指定)(☆) my $greeting_url = 'http://members4.tsukaeru.net/metamor1/cgi-bin/birth_e_test/greeting3_n_e.cgi'; #HTMLファイルのURL(フルパスで指定) my $greeting_url1 = 'http://members4.tsukaeru.net/metamor1/cgi-bin/birth_e_test/DATA/'; #sendmailのパス(☆) my $sendmail= '/usr/sbin/sendmail'; #あなたのメールアドレス(☆) my $my_address= 'metamor1@mxj.mesh.ne.jp'; #タイトルの名前(ブラウザ用)(★☆) my $html_title = 'Metamorphosis-One Birthday Card'; #タイトルの名前(トップ画面上部用)(★☆) my $titlemessage="$html_title"; #homeのURL(自分のHPのURLを記入する)(★☆) my $home_url = 'http://metamor1-web.hp.infoseek.co.jp/Index_english.html'; #フッターに挿入するタグ(★☆) my $hooter ="HOME"; #タグの有効・無効(0=無効、1=有効)(★☆) my $tag =0; #大きいカード再生方法(0=imgタグで再生、1=embedタグで再生)(★☆) my $imgembed=0; #サンプル画像並列数(デフォルトは横に3枚並べる)(★☆) my $width_line=3; #カードポジション(0=上下、1=左右)(★☆) my $card_position =1; #カードの有効期限(現在は、14日)(★☆) my $limit_time=60*60*24*14; #期日指定の有効期限(現在は、30日)(★☆) my $limit_permit=60*60*24*30; #お届けメールのsujbectに記入される言葉(英数字がお勧め)(★☆) my $default_subject= 'Metamorphosis-One GREETING SERVICE(Birthday)'; #案内文(★☆) my $welcome= 'あなたの気持ちをカードにして、贈りましょう(*^ ^*)
メッセージは適当に改行してくださいね♪
下のサンプル画像をクリックすると大きな画像を確認できます
(なお、カードを贈ると、確認の為、あなたにもメールが届きます)
(確認メールが届かない時は、お手数ですが、もう一度贈り直して下さい)
カードの有効期限は作成後、14日です
'; #バックの色(★☆) my $bgcolor='#CCCCCC'; #バックのイラスト(★☆) my $background='./IMAGE/background/birthday.jpg'; #文字の色(★☆) my $textcolor='black'; #リンクの色(★☆) my $linkcolor ='pink'; #一度訪れたリンクの色(★☆) my $vlinkcolor='pink'; #投稿の文字色(★☆) my $newscolor='dimgray'; #トップコメント色(★☆) my $subcolor='midnightblue'; #投稿のバックの色(★☆) my $tdcolor='floralwhite'; #案内文の文字色(★☆) my $welcolor='midnightblue'; #案内文の背景色(★☆) my $welbgcolor='mistyrose'; #CGIのURL(★☆) my $script_url = './greeting3_n_e.cgi'; # 排他制御として使用するディレクトリ名(★☆) my $lockname='./DATA/greeting3lock'; #perlのバージョンを指定(★) require 5.001; #cgi-lib.plのパスを指定(★) require "./cgi-lib.pl"; #jcode.plのパスを指定(★) require "./jcode.pl"; #custom.plのパスを指定(★) require "./custom_greeting.pl"; #現在time(★) my $now_time=time(); # 排他制御使用関数(★) my $expire = 3*60; # 最大排他制御時間( sec ) my $num_retry = 5; # 最大再試行回数 my $retry_time = 1; # 排他制御待ち時間( sec ) # Cookie の有効期間(現在30日に設定)(★) my $expires_time= &expires(30); # Cookie の有効期間を設定(★) my $expires="expires=$expires_time"; # Cookieの名前(★) my $C_NAME='GREETING3NE'; #sendmail に付加するオプション(★) my $mailoption= ' -t'; #エラーメール対策オプション(★) my $envelope= '-f '; #大きいカードしか用意していない場合(0=小さいカードあり、1=なし)(★☆) #小さいカードを用意していない場合は、下記にある小さいカードのURL等の設定を #無視して構わない。 my $onlybig=0; #小さいカードのURL(http://からのフルパスでも可)(★☆) $small_url[0]='./IMAGE/GREETING/bd1s.gif'; $small_url[1]='./IMAGE/GREETING/bd2s.jpg'; $small_url[2]='./IMAGE/GREETING/bd3s.jpg'; $small_url[3]='./IMAGE/GREETING/cakes.gif'; $small_url[4]='./IMAGE/GREETING/birthcs.jpg'; $small_url[5]='./IMAGE/GREETING/umareiwais.gif'; $small_url[6]='./IMAGE/GREETING/gr04s.gif'; $small_url[7]='./IMAGE/GREETING/gr05s.gif'; # $small_url[8]='./IMAGE/GREETING/fower1s.jpg'; # $small_url[9]='./IMAGE/GREETING/hikkosi1s.jpg'; # $small_url[10]='./IMAGE/GREETING/kaerus.jpg'; # $small_url[11]='./IMAGE/GREETING/birthday1s.jpg'; #小さいカードの横ピクセル(★☆) $small_width[0]=66;#それぞれのカードに対応するように記入して下さい $small_width[1]=66;#$small_url[0]は、$small_width[0]に入れる $small_width[2]=66; $small_width[3]=66; $small_width[4]=66; $small_width[5]=66; $small_width[6]=66; $small_width[7]=66; # $small_width[8]=66; # $small_width[9]=66; # $small_width[10]=66; # $small_width[11]=66; #小さいカードの縦ピクセル(★☆) $small_height[0]=100; $small_height[1]=100; $small_height[2]=100; $small_height[3]=100; $small_height[4]=100; $small_height[5]=100; $small_height[6]=100; $small_height[7]=100; # $small_height[8]=100; # $small_height[9]=100; # $small_height[10]=100; # $small_height[11]=100; #大きいカードのURL(http://からのフルパスでも可)(★☆) $big_url[0]='./IMAGE/GREETING/bd1.gif'; $big_url[1]='./IMAGE/GREETING/bd2.jpg'; $big_url[2]='./IMAGE/GREETING/bd3.jpg'; $big_url[3]='./IMAGE/GREETING/cake.jpg'; $big_url[4]='./IMAGE/GREETING/birthc.jpg'; $big_url[5]='./IMAGE/GREETING/umareiwai.gif'; $big_url[6]='./IMAGE/GREETING/gr04.gif'; $big_url[7]='./IMAGE/GREETING/gr05.gif'; # $big_url[8]='./IMAGE/GREETING/xmas.jpg'; # $big_url[9]='./IMAGE/GREETING/hikkosi1.jpg'; # $big_url[10]='./IMAGE/GREETING/kaeru.jpg'; # $big_url[11]='./IMAGE/GREETING/birthday1.jpg'; #大きいカードの横ピクセル(★☆) $big_width[0]=164;#それぞれのカードに対応するように記入して下さい $big_width[1]=164;#$big_url[0]は、$big_width[0]に入れる $big_width[2]=164; $big_width[3]=164; $big_width[4]=164; $big_width[5]=164; $big_width[6]=164; $big_width[7]=164; # $big_width[8]=164; # $big_width[9]=164; # $big_width[10]=164; # $big_width[11]=164; #大きいカードの縦ピクセル(★☆) $big_height[0]=250; $big_height[1]=250; $big_height[2]=250; $big_height[3]=250; $big_height[4]=250; $big_height[5]=250; $big_height[6]=250; $big_height[7]=250; # $big_height[8]=250; # $big_height[9]=250; # $big_height[10]=250; # $big_height[11]=250; #コメントの最大サイズ(★☆)スパムメール防止の為 my $comment_length= 3000; #トップコメントの最大サイズ(★☆)スパムメール防止の為 my $top_length= 100; #カードのトップコメントの配列(★☆) #トップコメントを増やしたい場合は、『,''』を『'Happy Wedding'』の #後に追加し、『''』の中にコメントを入れる。 #つまり、『'おめでとう','ありがとう','お知らせ'』のように #''とコンマで、連結して行くと言う事です。 my @top_array=( 'Select Top Comment', 'Your nice Birthday!', 'Happy Birthday' ); #サウンドの配列(日本語)(★☆) my @sound_outside=('BGMなし','カノン(パッヘルベル)','月の光(ドビュッシー)','G線上のアリア(バッハ)','イッヒ・リーベ・ディッヒ','幻想即興曲(ショパン)','婚礼の合唱(ワーグナー)','くるみ割り人形','ロンドンデリーの歌','夢路より(フォスター)','主よ人の望みの喜びよ','シシリエンヌ(フォーレ)','小犬のワルツ(ショパン)','亡き王女のためのパヴァーヌ'); #サウンドの配列(★☆) for($i=1;$i<@sound_outside;$i++){ $sound_array[$i]="./SOUND/$i.mid"; } #サウンド&画像の著作権 my $copyright='MIDI by まきろん
'; ##########ここより先は、Perlの知識が必要です!!########## ##########よく分からない人は、立ち入るべからず########## my %params; &ReadParse(\%params); $name = &jcode'sjis($params{'name'});#名前 $email = $params{'email'};#アドレス $comment = &jcode'sjis($params{'comment'});#コメント $original_top = &jcode'sjis($params{'original_top'});#自作のトップ $original_url = $params{'original_url'};#自作カードURL $sound_num = $params{'sound_num'};#BGM $original_sound = $params{'original_sound'};#自作BGM $card_num = $params{'card_num'};#選択カード番号 $command = $params{'command'};#コマンド $top_comment = &jcode'sjis($params{'top_comment'});#トップ $original_rating = $params{'original_rating'}; $secret_pass = &jcode'sjis($params{'secret_pass'});#パスワード $p_year = $params{'p_year'};#解禁期日 $p_month = $params{'p_month'};#解禁期日 $p_day = $params{'p_day'};#解禁期日 $address[0] = &jcode'sjis($params{'address1'});#相手の名前 $address[1] = &jcode'sjis($params{'address2'});#相手の名前 $address[2] = &jcode'sjis($params{'address3'});#相手の名前 $address[3] = &jcode'sjis($params{'address4'});#相手の名前 $address[4] = &jcode'sjis($params{'address5'});#相手の名前 $address_mail[0] = $params{'address_mail1'}; $address_mail[1] = $params{'address_mail2'}; $address_mail[2] = $params{'address_mail3'}; $address_mail[3] = $params{'address_mail4'}; $address_mail[4] = $params{'address_mail5'}; $repair = &jcode'sjis($params{'repair'});#ランキング値修正 my @repair=split(/\0/,$repair); $repair_delete = $params{'repair_delete'};#削除orトップ $repair_[0] = &jcode'sjis($params{'repair_0'}); $repair_[1] = &jcode'sjis($params{'repair_1'}); $repair_[2] = &jcode'sjis($params{'repair_2'}); $repair_[3] = $params{'repair_3'}; $repair_[4] = $params{'repair_4'}; $repair_[5] = $params{'repair_5'}; $repair_[6] = &jcode'sjis($params{'repair_6'}); $repair_[7] = &jcode'sjis($params{'repair_7'}); $repair_[8] = $params{'repair_8'}; $repair_[9] = $params{'repair_9'}; $repair_[10] = $params{'repair_10'}; $repair_[11] = $params{'repair_11'}; $repair_[12] = $params{'repair_12'}; $repair_[13] = $params{'repair_13'}; $repair_[14] = $params{'repair_14'}; $repair_[15] = $params{'repair_15'}; $repair_[16] = $params{'repair_16'}; $repair_[17] = &jcode'sjis($params{'repair_17'}); $repair_[18] = $params{'repair_18'}; $repair_[19] = $params{'repair_19'}; $repair_[20] = $params{'repair_20'}; $repair_[21] = $params{'repair_21'}; $repair_[22] = &jcode'sjis($params{'repair_22'}); $repair_[23] = $params{'repair_23'}; $repair_[24] = &jcode'sjis($params{'repair_24'}); shift @repair_; if($ENV{'QUERY_STRING'} ne ''){ ($card_pass,$email_pass)=split(/=/,$ENV{'QUERY_STRING'}); $command='look_card'; } #カードの大きいイメージ my @big; if($imgembed==1){ for($i=0;$i<@big_url;$i++){ $big[$i]=''; $big1[$i]=''; } }#フラッシュ画像等を使用する場合 else{ for($i=0;$i<@big_url;$i++){ $big[$i]=''; $big1[$i]=''; } } #カードの小さいイメージ my @image; if($onlybig==1){ @image=@big; }#大きいカードと小さいカードが同じ場合 else{ for($i=0;$i<@small_url;$i++){ $image[$i]=''; } } if($p_year ne '' && $p_month ne '' && $p_day ne ''){ my $year=$p_year-1900; my $month=$p_month-1; my $day=$p_day; use Time::Local; $permit_time=timelocal(0,0,0,$day,$month,$year); }#解禁期日が指定されている時 ####################条件分岐#################### if(defined ($dlock_id=&LockOn($lockname))){ if($repair_delete eq 'begin'){ my @custom=&custom_open($custom_file,$html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright); my ($html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright)=@custom; unlink($custom_file) if($secret_pass eq $secret); } my @custom=&custom_open($custom_file,$html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright);#カスタマイズ類を取得 foreach(@custom){ $_=~s/,/,/og; } ($html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright)=@custom;#カスタマイズ類を設定 foreach('name','email','comment','original_top','card_pass','email_pass','original_sound','top_comment'){ ${$_}=~s/&/&/og; ${$_}=~s//>/og if($tag==0); ${$_}=~s/,/,/og; }#タグの無効化 foreach($i=0;$i<@address;$i++){ $address[$i]=~s/&/&/og; $address[$i]=~s//>/og if($tag==0); $address[$i]=~s/,/,/og; $address_mail[$i]=~s/&/&/og; $address_mail[$i]=~s//>/og if($tag==0); $address_mail[$i]=~s/,/,/og; }#タグの無効化 for($i=0;$i<@repair_;$i++){ $repair_[$i]=~s/,/,/og; }#カンマの無害化 print html_header($html_title,$name,$email) unless($command=~/repair_custom/ && $secret_pass eq $secret); if($secret_pass eq $secret && $command eq '' && $repair_delete ne 'begin'){ &data_open; &target_list; } elsif($command eq 'repair_custom_beginner' && $secret_pass eq $secret){ ($html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright)=&repair_custom($custom_file,@repair_) if($repair_delete ne 'begin'); print html_header($html_title); &looking_list; } elsif($command eq 'repair_custom_pro' && $secret_pass eq $secret){ ($html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright)=&repair_custom($custom_file,@repair_) if($repair_delete ne 'begin'); print html_header($html_title); &looking_list; } elsif($command eq 'change' && $secret_pass eq $secret){ if($repair_delete eq 'repair'){ &data_open; &repair_data; &looking_list; }#削除の場合 elsif($repair_delete eq 'custom_beginner'){ &custom_beginner($script_url,$html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright,$secret_pass); }#カスタマイズする(初心者)場合 elsif($repair_delete eq 'custom_pro'){ &custom_pro($script_url,$html_title,$titlemessage,$home_url,$greeting_url,$my_address,$default_subject,$secret,$sendmail,$bgcolor,$background,$textcolor,$linkcolor,$vlinkcolor,$newscolor,$subcolor,$tdcolor,$welcome,$welcolor,$welbgcolor,$tag,$card_position,$hooter,$width_line,$copyright,$secret_pass); }#カスタマイズする(上級者)場合 elsif($repair_delete eq 'color'){ &color_list($script_url); }#色の見本を場合 elsif($repair_delete eq 'background'){ &background_list($script_url); }#背景イラストを見る場合 elsif($repair_delete eq 'top'){ &looking_list; }#トップに戻る場合 else{ &data_open; &target_list; }#指定なしの場合 } elsif($command eq 'look_card'){ &data_open; &pass_check; if($check eq ''){ $error_code='Not find data'; &looking_list; } elsif($check==0){ $error_code='Wait for to setting day'; &looking_list; } elsif($check==1){ &view_list; } else{ $error_code='Not find data'; &looking_list; } }#カードを見る場合 elsif($command eq 'select_card'){ foreach(@address_mail){ next if($_ eq ''); $address_checks{$_}++; $error_code='Not set same mail address' if($address_checks{$_}>1); }#アドレスが重複していないかチェック for($i=0;$i<@address;$i++){ my $temp=$i+1; if($address_mail[$i] ne '' && !($address_mail[$i]=~/^[0-9a-z_\.\-]+\@([0-9a-z_\-]+\.)+[0-9a-z_\-]+$/io)){ $error_code="Mail address of recipient is incorrect"; } elsif($address[$i] eq '' && $address_mail[$i] eq ''){ next; } elsif($address[$i] eq ''){ $error_code="Set Recipient name"; } elsif($address_mail[$i] eq ''){ $error_code="Set mail address of Recipient"; } last if($error_code ne ''); }#アドレス間違いor名前抜けorアドレス抜けをチェック unless($email=~/^[0-9a-z_\.\-]+\@([0-9a-z_\-]+\.)+[0-9a-z_\-]+$/io){ $error_code='Mail address is incorrect'; } elsif($name eq ''){ $error_code='Set your name'; } elsif($email eq ''){ $error_code='Set your mail address'; } elsif($comment eq ''){ $error_code='Write your Comment'; } elsif($comment_length$now_time+$limit_permit){ $error_code='1ヵ月以内の期日を指定して下さい'; } elsif($permit_time<$now_time-60*60*24 && $permit_time>0){ $error_code='Not select past date'; } elsif($address[0] eq '' && $address[1] eq '' && $address[2] eq '' && $address[3] eq '' && $address[4] eq '' ){ $error_code='Set Recipient name'; } elsif($address_mail[0] eq '' && $address_mail[1] eq '' && $address_mail[2] eq '' && $address_mail[3] eq '' && $address_mail[4] eq '' ){ $error_code='Set mail Address of Recipient'; } if($error_code eq ''){ &view_list; } else{ &looking_list; } }#カードを贈る場合(最終確認) elsif($command eq 'send_card'){ $error_code='Send your Birthday Card'; &data_open; &data_save; &pass_check; &send_card if($reload_check!=1); $address[0]=''; $address_mail[0]='';#初期化 &looking_list; }#カードを贈る場合(最終確認) elsif($command eq 'ranking'){ &data_open; &ranking_list; }#カードを贈る場合(最終確認) else{ &looking_list; } &LockOff($dlock_id); }#排他制御終了 else { &custom_open; print html_header($html_title); print &lock_error(); } print html_footer();#フッターを出力 exit 0; ####################htmlを表示#################### sub looking_list{ ($cookie_name,$cookie_email) = get_cookie(); ($c_cook,$c_name)=split(/:/,$cookie_name); ($c_cook,$c_email)=split(/:/,$cookie_email); $c_name=$name if($name ne ''); $c_email=$email if($email ne ''); $c_name=~s/"/"/g; $address[0]=~s/"/"/g; $width_line=3 if($width_line eq ''); #metamor1ソング情報 $songname='Happy Birthday'; $artistname='by Metamorphosis-One'; $linernotes="LinerNotes"; $songimage='./IMAGE/background/HappyBirthday.gif'; $lyricslink='http://metamor1-web.hp.infoseek.co.jp/lyr_happybirthday_e.html'; $linerlink='http://members4.tsukaeru.net/metamor1/lnote_happybirthday_j.html'; $songlink1='http://metamor1-web.hp.infoseek.co.jp/mp3/metamor1-HappyBirthday_eng04.m3u'; # $songlink1='http://www.kanaderu.jp/collection/Mp3sSong.jsp?aid=metamor1@lk&sid=2&soundtype=128'; $songlink2='http://metamor1-web.hp.infoseek.co.jp/mp3/metamor1-HappyBirthday_eng04_32.m3u'; # $songlink2='http://www.kanaderu.jp/collection/Mp3sSong.jsp?aid=metamor1@lk&sid=2&soundtype=22'; $listenimage1='./IMAGE/background/hifi.gif'; $listenimage2='./IMAGE/background/lofi.gif'; $news='Our service send Birthday card for you'; $titlesong1='Listen to Birthday song'; print < $titlemessage $error_code

$welcome
Designers of card images
Nishikimonochrome garden
Soukou-HachisuAsianLotus
Wadatsumi.HodakaGULAL
©copyright Soukou-Hachisu,Wadatsumi.Hodaka,Nishiki

END_OF_TEXT print ''; print < END_OF_TEXT # print ''; print <
Form of making card
Your name
Your Mail Address
Select Top Comment
Select Original Top Comment
BGMを選んで下さい
Comment