本日  昨日
 
12/03(Sat) 18:34

ハッピーバースディ4の作り方
○(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の入れ替えをお願いします


ハッピーバースディ V3.x に以下の機能追加をしました。V4.xとして公開します。CGI設置にあたっては、ハッピーバースディ3ハッピーバースディも参考にしてください。

データの互換性

V4.x新機能(sendmailが使えないサーバはmail関連の新機能はご利用できません)
  1. お祝いメール自動送信〜当日最初にbirthday.cgiがクリックされた時に一度だけ送信します
  2. 変更・削除キー問合せ自動メール返信〜登録メールアドレスによる個人認証
  3. 変更・削除キー再発行〜暗号化キー&Web確認システム、フリーメールでの申請の許可/不許可設定
  4. メール送信時の日本語文字化け対策〜日本語ヘッダはMIMEヘッダ(Base64)、本文はISO-2022-JP(JISコード)、URLはURLエンコードする
  5. カレンダーの月選択のonChange化〜表示月を選択するとその月のバースディカレンダーを自動表示します
  6. その他、IPアドレス非表示、表示形式変更などの表示に関する細部修正・追加

このCGI は、Mamiko.Sさん作「誕生花&誕生石プログラム」( birthday.pl )を利用させて頂いてます。また作者のご好意により再配布も許可していただきました。詳細をご覧になりたい方は作者のページMamiko's Pageをご覧ください。( birthday.plの著作権はMamiko.Sさんにあります )
作成手順を説明します。
  1. プログラムをダウンロードします.
  2. ダウンロードしたプログラムをを解凍し、編集します.
    1. perlのパスの確認(birthday.cgi、common.cgi、birthday.pl、sayhappy_sp.pl(cgi))
    2. jcode.plのパスの確認(birthday.cgi)
    3. ホームページ名、ホームページURL、ハンドル名、CGI格納ディレクトリURLの変更(birthday.cgi)
    4. 管理者のメールアドレスの変更(birthday.cgi)
    5. 管理者キーの変更(birthday.cgi)
    6. sendmailの選択とパス指定(birthday.cgi)
    7. whatday既設置の場合はwhatdayディレクトリのパス変更(sayhappy_sp.pl(cgi))
  3. サーバに転送し、実行権を設定をします.
  4. データ変換を実行します.(V2.xから移行の方のみ)
  5. 動作OKなら細かい個人設定をお好みに合わせて変更します.

プログラムをダウンロードします。

  1. ファイルのダウンロードの前に、あなたのパソコンにディレクトリを作ります。
    • ホームページのある場所(index.htmを置いてある場所)にbirthdayというサブディレクトリを作成します。(ここに解凍したファイルを置きます。)
    • サーバー側にもbirthdayというディレクトリを作成しておきます。

  2. ファイルの名前を(左)クリックするとダウンロードを始めます。
    • 右クリックでなくて左クリックですのでご注意下さい。
    • 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.1birthday.cgi
    セイハッピー
    ・スクリプト:sayhappy_sp.pl(or sayhappy_sp.cgi)
    ・データ:birthday.txt、monthly.txt、event.txt、history.txt
    v4.0sayhappy_sp.cgi


スポンサーリンク

ダウンロードしたファイルを解凍し、編集します。
  1. ファイルの構成と内容

    birthday.lzhを解凍し以下のファイルを使います。

    1. birthday.cgi(ハッピーバースディ本体)
    2. birthday.pl (誕生花・誕生石表示プログラム、Mamiko.Sさん作)
    3. common.cgi (birthday.cgi、sayhappy_sp.pl(cgi)共用プログラム)
    4. birthdaydat.cgi(データファイル)
    5. birthday.gif (タイトル画像)
    6. mail.gif (メール用画像)
    7. home.gif (ホームページ用画像)
    8. heart.gif (お誕生日マーク画像)
    9. blank.gif (空白画像)
    10. haikei.gif (背景画像)
    11. jcode.pl (日本語コード変換プログラム)
    12. sayhappy_sp.pl(cgi)(今日・今月の誕生日&今日は何の日表示プログラム)
    13. birthday.txt(有名人誕生日ファイル)
    14. monthly.txt (何の日ファイル)
    15. event.txt (行事ファイル)
    16. history.txt (歴史・出来事ファイル)

  2. birthday.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;の時に、この行をコメント化しないとエラーになりますので注意してください。。

    (参考)CGIは動作してるのにメールが送れない場合の対処法
    • 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に指定したホームページ名が英文の場合はこの方法で英文ホームページ名表示になります)

    トクトクサーバでのテスト結果(動作確認 by 秀太郎さん
    1.@niftyメール-----OutlookExpress、Webメールとも(送信者名文字化け、件名OK)
    2.hotmailメール----OutlookExpress(送信者名OK、件名文字化け)、Webメール(送信者名、件名ともOK)
    3.yahooメール-----Webメール(送信者名、件名ともOK)

  3. sayhappy_sp.pl(sayhappy_sp.cgiの場合は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.cgiのパス指定の違いと基本的な考え方 〜 パスの指定のしかたはこちらです。
     ・sayhappy_sp.plの場合
       sayhappy_sp.plのSSI文を記述したhtml文(index.html等)からみたそのファイルのパスを指定します
     ・sayhappy_sp.cgiの場合
       sayhappy_sp.cgiからみたそのファイルのパスを指定します

  4. birthday.pl、common.cgi
    • 1行目: #!/usr/bin/perl をあなたのプロバイダの「perlのあるパス」に書き換えます。

  5. birthdaydat.cgi、birthday.gif、mail.gif、home.gif、heart.gif、blank.gif、haikei.gif、jcode.pl
    birthday.txt、monthly.txt、event.txt、history.txt
    • なにも変更しません。そのまま使います。

リンク方法
  1. birthday.cgiへのリンク
    • index.htmの中に以下のリンクを貼ります。
      <a href="./birthday/birthday.cgi">ハッピーバースディ</a>

  2. 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>

その他
  1. index.htmなどのSSI記述するファイルの拡張子について
    • プロバイダーによってはSSIを記述するファイルの拡張子はindex.shtmlと、shtmlでないと動作しないところがあります(infoseekなど)。あなたのプロバイダーに確認してください。


サーバに転送し、実行権を設定をします。

  1. 画像データをサーバ側にバイナリモードで、それ以外のファイルをアスキーモードで、転送します。

  2. ファイルの構成と実行権
    転送が終わったら、 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

  1. 2004/05/29 v4.1 日本語ヘッダ(送信者、件名)をMIMEエンコード(Base64、Bエンコード)する(1)、しない(0)の選択機能の追加。
  2. 2004/04/29 v4.0 v4.0スクリプト公開。
sayhappy_sp

  1. 2004/04/29 v4.0 v4.0スクリプト公開。

 
 
©1997- Kikuchisan's workshop All rights reserved //