| 10/31(Fri) 22:40 ■ ハッピーバースディ4の作り方
 ★「おしらせ」★(2021/01/19)
 ■2021年限りの祝日の移動(2020.12.28施行)
 新型コロナウイルス感染症の世界的流行により、東京オリンピック・パラリンピックが2021年(令和3年)に1年延期されたため、
 2021年(令和3年)に限り、『海の日』は7月22日に、『スポーツの日』は7月23日に、『山の日』は8月8日になります。8月9日は休日となります。
 ■2020(令和2)年施行の「祝日法」の改正
 2020年以降「体育の日」を「スポーツの日」と名称変更
 
■2020(令和2)年施行の「東京五輪・パラリンピック特別措置法」(2020年限定)2020年に限り、「海の日」は7月23日、「体育の日(スポーツの日)」は7月24日(7/24開会式)、「山の日」は8月10日(8/9閉会式)へと日時移動
 
■2019(令和1)年施行の「祝日法」の改正新天皇即位に伴い、2019年5月以降の天皇誕生日を12月23日から2月23日に期日変更
 
■2019(令和1)年施行の「天皇即位に関する休日法」(2019年限定)天皇の即位の日(5/1)及び即位礼正殿の儀の行われる日(10/22)を休日とする
 ■(2016.12.28) 2016(平成28)年施行の「祝日法」の改正、8/11「山の日」に対応しました。
 
■(2008.04.23) 2007(平成19)年施行の「祝日法」の改正で抜けていた(1)国民の祝日が日曜日と重なる場合、その直後の「国民の祝日でない日」を振替休日とする(5/3や5/4が日曜日と重なった場合には5/6が振替休日)
 (2)国民の祝日に挟まれた平日を国民の休日とする(敬老の日と秋分の日)
 に対応しました。最新版のbirthday4.lzhをダウンしてbirthday.cgiの入れ替えをお願いします
 
■(2007.04.29) 2007(平成19)年施行の「祝日法」の改正・4/29「みどりの日」→「昭和の日」
 ・5/4「国民の祝日」→「みどりの日」
 に対応しました。最新版のbirthday4.lzhをダウンしてbirthday.cgiの入れ替えをお願いします
 
■(2004.02.21) 「敬老の日」が2003(平成15)年から9月第3月曜日になる「祝日法」の改正に未対応だったのを対応するように修正 
■(2003.05.03) 「海の日」が2003(平成15)年から7月第3月曜日になる「祝日法」の改正に対応。また振替休日が祝日の場合に振替休日を表示してしまうバグを修正しました 
 ハッピーバースディ V3.x に以下の機能追加をしました。V4.xとして公開します。CGI設置にあたっては、ハッピーバースディ3、ハッピーバースディも参考にしてください。
 
■データの互換性
 
■V4.x新機能(sendmailが使えないサーバはmail関連の新機能はご利用できません)V3.x:データの互換性有り → そのまま使えます
V2.x:データの互換性無し → ハッピーバースディV3.xに同梱されているデータ変換マニュアル.htmlを使ってV3.x用データに変換後ご利用ください
 
お祝いメール自動送信〜当日最初にbirthday.cgiがクリックされた時に一度だけ送信します
変更・削除キー問合せ自動メール返信〜登録メールアドレスによる個人認証
変更・削除キー再発行〜暗号化キー&Web確認システム、フリーメールでの申請の許可/不許可設定
メール送信時の日本語文字化け対策〜日本語ヘッダはMIMEヘッダ(Base64)、本文はISO-2022-JP(JISコード)、URLはURLエンコードする
カレンダーの月選択のonChange化〜表示月を選択するとその月のバースディカレンダーを自動表示します
その他、IPアドレス非表示、表示形式変更などの表示に関する細部修正・追加
 このCGI は、Mamiko.Sさん作「誕生花&誕生石プログラム」( birthday.pl )を利用させて頂いてます。また作者のご好意により再配布も許可していただきました。詳細をご覧になりたい方は作者のページMamiko's Pageをご覧ください。( birthday.plの著作権はMamiko.Sさんにあります )
 ■作成手順を説明します。
 
プログラムをダウンロードします.
ダウンロードしたプログラムをを解凍し、編集します.
  
  perlのパスの確認(birthday.cgi、common.cgi、birthday.pl、sayhappy_sp.pl(cgi))
  jcode.plのパスの確認(birthday.cgi)
  ホームページ名、ホームページURL、ハンドル名、CGI格納ディレクトリURLの変更(birthday.cgi)
  管理者のメールアドレスの変更(birthday.cgi)
  管理者キーの変更(birthday.cgi)
  sendmailの選択とパス指定(birthday.cgi)
  whatday既設置の場合はwhatdayディレクトリのパス変更(sayhappy_sp.pl(cgi))
  サーバに転送し、実行権を設定をします.
データ変換を実行します.(V2.xから移行の方のみ)
動作OKなら細かい個人設定をお好みに合わせて変更します.
 ■ プログラムをダウンロードします。
 
 
ファイルのダウンロードの前に、あなたのパソコンにディレクトリを作ります。
ホームページのある場所(index.htmを置いてある場所)にbirthdayというサブディレクトリを作成します。(ここに解凍したファイルを置きます。)
サーバー側にもbirthdayというディレクトリを作成しておきます。
 
ファイルの名前を(左)クリックするとダウンロードを始めます。
右クリックでなくて左クリックですのでご注意下さい。
downcnt.cgiという名前で保存されますので、birthday4.lzhなど名前を変更して保存します。これをLhasaなどの解凍ソフトで解凍します。
 
| ファイル名 | このファイルに同梱されてるファイル内容 | 最新版 | サンプル | 
|---|
 | birthday4.lzh (約143KB)
 | ■バースディカレンダー ・スクリプト:birthday.cgi、birthday.pl、common.cgi、jcode.pl
 ・データ:birthdaydat.cgi
 ・画像:birthday.gif、home.gif、mail.gif、heart.gif、blank.gif、haikei.gif
 | v4.1 | birthday.cgi |  | ■セイハッピー ・スクリプト:sayhappy_sp.pl(or sayhappy_sp.cgi)
 ・データ:birthday.txt、monthly.txt、event.txt、history.txt
 | v4.0 | sayhappy_sp.cgi |  スポンサーリンク
 
 ■ ダウンロードしたファイルを解凍し、編集します。
 
 
■ リンク方法ファイルの構成と内容
birthday.lzhを解凍し以下のファイルを使います。
 
birthday.cgi(ハッピーバースディ本体)
birthday.pl (誕生花・誕生石表示プログラム、Mamiko.Sさん作)
common.cgi (birthday.cgi、sayhappy_sp.pl(cgi)共用プログラム)
birthdaydat.cgi(データファイル)
birthday.gif (タイトル画像)
mail.gif (メール用画像)
home.gif (ホームページ用画像)
heart.gif (お誕生日マーク画像)
blank.gif (空白画像)
haikei.gif (背景画像)
jcode.pl (日本語コード変換プログラム)
sayhappy_sp.pl(cgi)(今日・今月の誕生日&今日は何の日表示プログラム)
birthday.txt(有名人誕生日ファイル)
monthly.txt (何の日ファイル)
event.txt (行事ファイル)
history.txt (歴史・出来事ファイル)
 
birthday.cgi
(参考)CGIは動作してるのにメールが送れない場合の対処法1行目: #!/usr/bin/perl  をあなたのプロバイダの「perlのあるパス」に書き換えます。多くのプロバイダは #!/usr/local/bin/perl になると思いますが、うまくいかない場合はプロバイダに問い合わせて下さい。
23行目: require './jcode.pl';いくつかのCGIを設置しててjcode.plを共通に使ってる方で、jcode.plを違うディレクトリーに置いている場合はそのjcode.plがあるパスに書き換えます。そうでない方はこのままにします。
32行目: cgi-binのようにCGIとHTMLファイルや画像データの置き場所が異なるときは $basedir = '.';に、このCGIから見た画像データディレクトリの相対パス or 絶対パス、またはURLを指定します。CGIと画像データの置き場所が同じ場合はこのままにします。
49行目: $hpname = 'ホームページ名';をあなたのホームページ名に変更します。
50行目: $hpurl  = 'http://www.xxxxxx.com/';をあなたのホームページURLに変更します。
51行目: $dirurl = 'http://www.xxxxxx.com/birthday';をCGIを格納したディレクトリのURLに変更します。最後の「/」は付けません。
53行目: $mailto = 'xxxxx@xxxxxx.com';をあなたのメールアドレスに変更します。
54行目: $handle = 'ハンドル名'を管理者のハンドル名(お祝いメール自動送信の送信者名)に変更します。
55行目: $admin = 'xxxxx123';をあなたの管理者キーの設定に変更します。管理者キーは「変更・削除キー」が判らなくても、確認したい登録者の「名前」「誕生日」を入力後、このキーを「変更・削除画面」「変更・削除キー」に入力すると管理者による登録情報の確認(変更・削除キーなど、管理者ログインの場合は投稿排除設定に必要なIPアドレスも表示)や登録情報の変更・削除ができるように設けたものです。
69行目: $sendmail = '/usr/sbin/sendmail'; にsendmail送信プログラムのパスをプロバイダに確認し設定します。
90行目: $encode = '1'; に日本語ヘッダ(送信者、件名)をMIMEエンコードをする(1)か、しない(0)かの設定をします。サーバー管理者に、use MIME::Base64;コマンドが利用できるかを確認し、できる場合はする(1)を、できない場合はしない(0)を指定します。送信者は、(1)の場合は管理者のホームページ名(日本語)、(0)の場合は管理者のメールアドレス(英数字)になります。また、(0)を設定した場合、サーバーによっては日本語件名が文字化けすることがあります。
91行目: $encode = 0;を指定した場合は、この行 use MIME::Base64; の文頭に「#」を追加(#use MIME::Base64;)してuse文を無効(コメント文)にしてください。【重要】$encode = 0;の時に、この行をコメント化しないとエラーになりますので注意してください。。
 
 
 
■トクトクサーバでのテスト結果(動作確認 by 秀太郎さん)MIMEエンコードとはデータを任意のコードに変換することをエンコードと言います。戻すことをデコードと言います。Eメール(SMTPプロトコル)では、日本語テキストや画像等のバイナリデータなどの8bitのデータの送信は保証されない(データが欠落することがある)ため、7bitのデータ(半角の英数記号のASCIIコード)に変換して送ります。これを行うのがMIMEエンコードです。
 
CGIは動作してるのにメールが送れない場合は、MIMEエンコードをしない(0)に変更し、かつuse文をコメント文にして(方法は上記参照)メール送信ができるかを確認してください。しない(0)設定かつuse文のコメント化で、sendmailをサポートしてる全てのサーバーでメール送信が可能になります。
(応用)しない(0)設定でメール送信はできるが、use MIME::Base64;コマンドが利用できないサーバーで、送信者を日本語ホームページ名にしたい方は、common.cgiの138行目当りにある
  } else { print MAIL "From: $mailto\n"; } を
   } else { local $name = $hpname." <$mailto>"; print MAIL "From: $name\n"; }に変更してみてください。メール規約違反ですがサーバーによっては$hpnameで指定した日本語ホームページ名表示ができる場合があります。(なお、$hpnameに指定したホームページ名が英文の場合はこの方法で英文ホームページ名表示になります)
 
 
 1.@niftyメール-----OutlookExpress、Webメールとも(送信者名文字化け、件名OK)
2.hotmailメール----OutlookExpress(送信者名OK、件名文字化け)、Webメール(送信者名、件名ともOK)
3.yahooメール-----Webメール(送信者名、件名ともOK)
 sayhappy_sp.pl(sayhappy_sp.cgiの場合はCGI中の説明をご覧ください)
(参考)sayhappy_sp.plとsayhappy_sp.cgiのパス指定の違いと基本的な考え方 〜 パスの指定のしかたはこちらです。1行目: #!/usr/bin/perl  をあなたのプロバイダの「perlのあるパス」に書き換えます。
19行目: $sel = 0; に表示項目選択番号を指定します。詳細はカスタマイズの項を参照してください。
26行目: $basedir = './birthday' を、このCGIを貼りつけたHTML文、から見たbirthdayディレクトリのパスにします。cgi-binなどCGIの置き場所が指定されてるプロバイダーの方はここを変更します。birthdayディレクトリに全てのファイルを置けるプロバイダーの方は変更しません。
31行目: 画像データを別のディレクトリに置かないといけないプロバイダーの方は$basedir2 = './birthday';に、このCGIを貼りつけたHTML文、から見た画像データのあるディレクトリパスを指定して下さい。
36行目: 今日は何の日をwhatdayディレクトリに設置済みの方は $basedir3 = './birthday' を、このCGIを貼りつけたHTML文、から見たwhatdayディレクトリのパスに変更します。設置されてない方はこのままにします。
 ・sayhappy_sp.plの場合
 sayhappy_sp.plのSSI文を記述したhtml文(index.html等)からみたそのファイルのパスを指定します
 ・sayhappy_sp.cgiの場合
 sayhappy_sp.cgiからみたそのファイルのパスを指定します
 
 
birthday.pl、common.cgi
1行目: #!/usr/bin/perl  をあなたのプロバイダの「perlのあるパス」に書き換えます。
birthdaydat.cgi、birthday.gif、mail.gif、home.gif、heart.gif、blank.gif、haikei.gif、jcode.plbirthday.txt、monthly.txt、event.txt、history.txt
 
 
■ その他birthday.cgiへのリンク
index.htmの中に以下のリンクを貼ります。<a href="./birthday/birthday.cgi">ハッピーバースディ</a>
 
sayhappy_sp.plへのリンクSSIが使える場合は、sayhappy_sp.plを、使えない場合は、sayhappy_sp.cgiを使ってiframeで表示します。(iframeをサポートしてないブラウザNN4.xxでは表示されません)
 
 
index.htmの中の表示したい場所に以下のSSI文を記述します。<!--#exec cmd="./birthday/sayhappy_sp.pl"-->
 
index.htmの中の表示したい場所に以下のIFRAME文を記述します。<iframe src="./birthday/sayhappy_sp.cgi" name="inline" frameborder="0" width="680" height="400" scrolling="auto" marginheight="0" marginwidth="0"></iframe>
 
 
 
index.htmなどのSSI記述するファイルの拡張子について
プロバイダーによってはSSIを記述するファイルの拡張子はindex.shtmlと、shtmlでないと動作しないところがあります(infoseekなど)。あなたのプロバイダーに確認してください。
 ■ サーバに転送し、実行権を設定をします。
 
 
画像データをサーバ側にバイナリモードで、それ以外のファイルをアスキーモードで、転送します。
ファイルの構成と実行権転送が終わったら、 CGI(拡張子xxxx.pl、xxxx.cgiのファイル)に実行権755を、 birthdaydat.cgi に666を、ディレクトリ birthday に777を設定します。ディレクトリの実行権の設定を忘れないで下さい。
 
index.htm
birthday(777)
    |--------- birthday.cgi (755)
    |--------- birthday.pl (755)
    |--------- common.cgi (755)
    |--------- birthdaydat.cgi (666)
    |--------- birthday.gif
    |--------- mail.gif
    |--------- home.gif
    |--------- heart.gif
    |--------- blank.gif
    |--------- haikei.gif
    |--------- jcode.pl (755)
    |--------- sayhappy_sp.pl (755)
    |--------- birthday.txt
    |--------- monthly.txt
    |--------- event.txt
    |--------- history.txt
 ■ データ変換の実行(V3.xからの移行および新規に設置される方はデータ変換は必要ありません)
 
旧バージョン(V2.9x以前)から新バージョンへ移行される方は、データに互換がありませんので、こちらのページからbirthday3.lzhをダウンロードし、同梱のデータ変換マニュアル.htmlをご覧の上、データ変換CGI dataconv.cgi  を利用してデータ変換を実行してください。dataconv.cgiはブラウザ上から簡単に実行でき、CGIに自信がない方にも確実かつ安全にV2.9x以前の旧データからV3.xデータへの移行ができます。
 さぁ、これで完成です。index.htmのハッピーバースディをクリックして見ましょう。ハッピーバースディが表示されれば完成です。
 ■ 更新履歴
 
■ birtday 
 
■ sayhappy_sp2004/05/29 v4.1 日本語ヘッダ(送信者、件名)をMIMEエンコード(Base64、Bエンコード)する(1)、しない(0)の選択機能の追加。
2004/04/29 v4.0 v4.0スクリプト公開。
 
 
2004/04/29 v4.0 v4.0スクリプト公開。
 
   |