本日  昨日
 
12/07(Sat) 02:11

ハッピーバースデイ3(sendmail版)の作り方
(04.02.21)「敬老の日」が2003(平成15)年から9月第3月曜日になる「祝日法」の改正に未対応だったのを対応するように修正。最新版のbirthday.cgi(v3.5)をダウンロードしbirthday.cgiのみ入れ替えをお願いします
お知らせ(03.12.22)スタイルシート適用と海外サーバ対応をlocaltimeからgmtimeに変更および有名人誕生日データ等の更新:birthday.cgi(v3.4)、sayhappy_sp.pl(v3.1)。birthday.cgi、common.cgi、birthday.pl、sayhappy_sp.pl(sayhappy_sp.cgi)、birthday.txt、history.txt、event.txtの入れ替えをしてください

重要なお知らせ(03.08.28)削除通知メールが削除者に通知されないバグを修正しました。併せて管理者発信メールのコピーをCcからBccに変更しました。お手数ですが最新版のbirthday3.lzh(V3.3)をダウンロードしbirthday.cgi、common.cgiの入れ替えをお願いします
(03.08.23)管理者用の登録情報確認・変更・削除機能を追加しました。最新版のbirthday3.lzh(V3.2)をダウンロードし管理者キー設定後、birthday.cgiのみ入れ替えをお願いします

ハッピーバースデイ(V2.9x以前)に以下の機能追加をしました。V3.xとして公開します。V3.xはsendmailが使えるサーバをご利用の方を対象にしています。またプロバイダーがメール送信CGIを提供してる場合もこのサービスを利用してハッピーバースデイV3.xの利用が可能です→変更方法はこちらです。

補足)sendmailやプロバイダー提供メール送信CGIが使えないプロバイダーでもV3.xはmailto送信が可能です。この場合は、メーラによるフォームメール送信(IE5やNN4)かメーラが起動し通常のメール送信(IE6やNN7)になりV2.xと同様メルアド非公開にはなりません。

<V3.x追加機能>

  1. メールアドレス、ホームページURL非公開
  2. 登録通知メール送信
  3. お祝メールの受信数制限
  4. 登録者による登録データの変更・削除
  5. 海外サーバ対応
  6. 投稿排除設定
  7. レイアウト設定(テーブルの横幅の表示サイズ、文字サイズ)
<特徴>
・本日の誕生花、花言葉と誕生石、宝石言葉を表示します。
・当日誕生日を迎えられた方にはお誕生日メッセージを表示します。
・トップページの表示は一覧表示(誕生順表示、登録順表示)、カレンダー表示を選択できます。
・全表示、誕生月を指定しての表示が可能です。
・カレンダーは土日表示、祝日名つき祝日表示です。
・変更/削除機能の権限を「管理者のみ」 or 「投稿者も可」に設定できます。
・変更・削除キー問い合わせメール機能。
・AND検索が可能な検索機能。
・一覧表示で1ページに表示する最大件数をユーザ指定できます。
・登録コメント文の文字数限度設定およびオーバした場合の削除文字数を通知する機能。
・「今日の誕生日」「今月の誕生日」「今日は何の日」を好きなページに表示します( sayhappy_sp )。
・背景や文字色のカスタマイズが簡単な変更で可能です。
このCGI は、Mamiko.Sさん作「誕生花&誕生石プログラム」( birthday.pl )を利用させて頂いてます。また作者のご好意により再配布も許可していただきました。詳細をご覧になりたい方は作者のページMamiko's Pageをご覧ください。( birthday.plの著作権はMamiko.Sさんにあります )
作成手順を説明します。
  1. プログラムをダウンロードします.
  2. ダウンロードしたプログラムをを解凍し、編集します.
    1. perlのパスの確認(全CGI)
    2. jcode.plのパスの確認(birthday.cgi、dataconv.cgi)
    3. ホームページ名の変更(birthday.cgi)
    4. 管理者のメールアドレスの変更(birthday.cgi)
    5. 管理者キーの変更(birthday.cgi)
    6. sendmailの選択とパス指定(birthday.cgi)
    7. whatday既設置の場合はwhatdayディレクトリのパス変更(sayhappy_sp.pl or sayhappy_sp.cgi)
  3. サーバに転送し、実行権を設定をします.
  4. データ変換を実行します.(同梱マニュアル参照)
  5. 動作OKなら細かい個人設定をお好みに合わせて変更します.

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

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

  2. プログラムの名前を(左)クリックするとダウンロードを始めます。

    1. バースディカレンダーご利用の方:birthday3.lzhをダウンして下さい。
    2. セイハッピーご利用の方:birthday3.lzhsayhappy3.lzhをダウンして下さい。
      (whatdayを設置済みの方はそのデータファイルの利用が可能です。)

    CGIを動かすのに必要なファイル達
      (1) birthday.cgi-----赤色のファイルが必要です。
      (2) sayhappy_sp.pl---赤色青色のファイルが必要です。

    (右クリックでなくて左クリックですのでご注意下さい。)
    ファイル名このファイルに同梱されてるファイル内容最新版サンプル
    birthday3.lzh
     (約41KB)
    スクリプト:birthday.cgi、birthday.pl、common.cgi、jcode.pl、dataconv.cgi
    データ:birthdaydat.cgi
    画像:birthday.gif、home.gif、mail.gif、heart.gif、blank.gif
    マニュアル:データ変換マニュアル.html
    v3.5birthday.cgi
    sayhappy3.lzh
     (約103KB)
    スクリプト:sayhappy_sp.pl(or sayhappy_sp.cgi)
    データ:birthday.txt、monthly.txt、event.txt、history.txt
    v3.1sayhappy_sp.cgi

    downcnt.cgiという名前で保存されますので、birthday3.lzhなど名前を変更して保存します。これをLhasaなどの解凍ソフトで解凍します。


ダウンロードしたファイルを解凍し、編集します。
  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. jcode.pl (日本語コード変換プログラム)
    11. dataconv.cgi(V2.x→V3.xデータ変換プログラム)
    12. データ変換マニュアル.html(dataconv.cgiマニュアル、サーバには転送しません。オフラインで閲覧してください)

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

    1. sayhappy_sp.pl(cgi)(今日・今月の誕生日&今日は何の日表示プログラム)
    2. birthday.txt(有名人誕生日ファイル)
    3. monthly.txt (何の日ファイル)
    4. event.txt (行事ファイル)
    5. history.txt (歴史・出来事ファイル)

  2. birthday.cgi
    • 1行目: #!/usr/bin/perl をあなたのプロバイダの「perlのあるパス」に書き換えます。
      多くのプロバイダは #!/usr/local/bin/perl になると思いますが、うまくいかない場合はプロバイダに問い合わせて下さい。
    • 28行目: $hpname = "ホームページ名";をあなたのホームページ名に変更します。
    • 32行目: $mailto = 'xxxx@xxxxxx.com';をあなたのメールアドレスに変更します。
    • 36行目: $admin = 'xxxxx123';をあなたの管理者キーの設定に変更します。管理者キーは「変更・削除キー」が判らなくても、確認したい登録者の「名前」「誕生日」を入力後、このキーを「変更・削除画面」「変更・削除キー」に入力すると管理者による登録情報の確認(変更・削除キーなど、管理者ログインの場合は投稿排除設定に必要なIPアドレスも表示)や登録情報の変更・削除ができるように設けたものです。
    • 45行目: CGIと画像データの置き場所が異なるときは $basedir = '.';に、このCGIから見た画像データディレクトリの相対パス or 絶対パス、またはURLを指定します。CGIと画像データの置き場所が同じ場合はこのままにします。
    • 138行目: $sendmail = '/usr/lib/sendmail'; の/usr/lib/sendmailにsendmail送信プログラムのパスをプロバイダに確認し設定します。

  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ディレクトリのパスに変更します。設置されてない方はこのままにします。

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

  5. birthdaydat.cgi、birthday.gif、mail.gif、home.gif、heart.gif、blank.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でないと動作しないところがあります(freewebなど)。あなたのプロバイダーに確認してください。

  2. jcode.plのディレクトリー指定の方法(手持ちの jcode.pl を使う方)
    • いくつかのCGIを設置してて、jcode.plを共通に使ってる方は、jcode.plを違うディレクトリーに置いてあると思いますので、birthday.cgi、dataconv.cgiの require './jcode.pl'; の赤の部分をそのディレクトリー指定に書き換えます。パスの指定のしかたはこちらです。

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

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

  2. データ変換が完了したらいたずら防止のためdataconv.cgiをサーバから削除します。

  3. ファイルの構成と実行権
    転送が終わったら、 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
        |--------- jcode.pl (755)
        |--------- sayhappy_sp.pl (755)
        |--------- birthday.txt
        |--------- monthly.txt
        |--------- event.txt
        |--------- history.txt
        |--------- dataconv.cgi (755) [データ変換後サーバから削除]
    

データ変換の実行(新規に設置される方はデータ変換は必要ありません)

旧バージョン(V2.9x以前)から新バージョンへ移行される方は、データに互換がありませんので、同梱のデータ変換マニュアル.htmlをご覧の上、データ変換CGI dataconv.cgi を利用してデータ変換を実行してください。dataconv.cgiはブラウザ上から簡単に実行でき、CGIに自信がない方にも確実かつ安全にV2.9x以前の旧データからV3.xデータへの移行ができます。


さぁ、これで完成です。index.htmのハッピーバースデイをクリックして見ましょう。ハッピーバースデイが表示されれば完成です。
SSIコマンド #exec が使えないときの対処法

プロバイダーの中には SSI は使えるが、 #exec コマンドを禁止してるプロバイダー(hi-hoなど)があります。この場合、#include コマンドが使えれば、sayhappy_sp.plを#include用に変更することで同じSSI動作をさせることが出来ます。

  • sayhappy_sp.plの変更個所
    ・7行目:#print "Content-type: text/html\n\n";の # を削除します。
    ・26行目:$basedir = './birthday'; の/birthdayを削除し $basedir = '.'; にします。
    ・36行目:$basedir3 = './birthday'; の/birthdayを削除し $basedir = '.'; にします。今日は何の日をwhatdayディレクトリに設置済みの方はこのCGIを貼りつけたHTML文、から見たwhatdayディレクトリのパスに変更します。
    ・141行目:onClick='location=\"$basedir/birthday.cgi?action=reg&vew=$mon&disp=rday\"'およびonClick='location=\"$basedir/birthday.cgi\"'の$basedir/birthday.cgiの部分に$basedir/birthday/birthday.cgi と/birthdayを追加します。

  • index.htm中の表示したい場所に以下の記述をします。
    ( sayhappy_sp.plでうまく行かないときは拡張子をsayhappy_sp.cgiに変更してみてください。プロバイダによっては拡張子がcgiでないと動作しないことがあります)
    <!--#include virtual="./birthday/sayhappy_sp.pl"-->


もっとあなた好みにしてみませんか!(カスタマイズ)

正常動作が確認できたら、もっとあなた好みに変更(カスタマイズ)しましょう。

簡単に変更できる項目
個人設定の部分が変更できます。いろいろトライしてみて下さい。

birthday.cgi

  1. トップページの表示形式
    • $toppage = 2; #カレンダー表示 0、登録順一覧表示 1、誕生順一覧表示 2
  2. 1ページに表示する件数
    • $pmax = '50';
  3. 登録コメント文の文字数限度...全角文字1文字で「2」100で全角文字50文字...
    • $commax = '80';
  4. bodyタグの設定
    • $col_bg = 'white'; #背景色
      $col_txt = 'black'; #テキスト色
      $bgpic = $basedir.'/haikei.gif'; #背景に画像を使う場合場所を指定
  5. 文字サイズ(スタイルシート)
    • $size1 = "12pt"; #名前の文字サイズ
      $size2 = "10pt"; #名前以外の文字サイズ
  6. レイアウト(テーブルの横幅の表示サイズ)
    • $titwidth = '550'; #タイトル部の横幅(pixel指定or%指定)
      $tblwidth = '95%'; #誕生日表示部の横幅(pixel指定or%指定)
  7. 文字色( カラー名 or カラーコードを変更 )
    • $col_name = 'crimson'; #名前
      $col_mess = 'blue'; #メッセージ
      $col_regi = 'navy'; #登録日
      $col_flow = 'brown'; #誕生花メッセージ
      $col_srch = 'red'; #検索文字
  8. MIDIデータを使う
    • $midi = $basedir.'/happybirthday.mid';
  9. タイトル用メッセージ文
    • $topmsg = 'みんなで作るバースディカレンダーです。あなたの誕生日やご家族の誕生日をご登録下さい。';
  10. お誕生日お祝いメッセージ(送信フォームに自動設定されます)
    • $mess = 'お誕生日おめでとうございます。今日一日が楽しい日でありますように!';
sayhappy_sp.pl(cgi)
  1. 表示項目選択
    • $sel = 0;
      0:今日の誕生日+今日は何の日+今月の誕生日
      1:今日の誕生日+今日は何の日
      2:今日の誕生日          +今月の誕生日
      3:          今日は何の日+今月の誕生日
      4:今日の誕生日
      5:                    今月の誕生日
        (注)今日は何の日のみ表示はwhatday.plをご利用ください
  2. 文字色( カラー名 or カラーコードを変更 )
    • $col_name = 'crimson'; #birthday名前の文字色
      $col_name2 = 'blue'; #whatday名前文字色
      $col_flow = 'brown'; #誕生花メッセージの文字色
      $scolor = "lightcyan"; #新着色
  3. 文字サイズ(スタイルシート)
    • $size = "9pt";
  4. 今月の誕生日で1行に表示する人数(2,4と偶数値を指定)。あなたのページに合わせて調整します。
    • $num = 4;
  5. テーブル幅の指定。(%指定 or ピクセル指定)。あなたのページに合わせて調整します。
    • $wid = "95%";
  6. 新着を、過去何日以内にするか日にちを指定
    • $new = '30';

更新履歴

birtday

  1. 2004/02/21 v3.5 「敬老の日」が2003(平成15)年から9月第3月曜日になる「祝日法」の改正に未対応だったのを対応するように修正。
  2. 2003/12/21 v3.4 スタイルシート適用と海外サーバ対応をlocaltimeからgmtimeに変更。
  3. 2003/08/28 v3.3 削除通知メールが削除者に通知されないバグを修正。併せて管理者発信メールのコピーをCcからBccに変更。
  4. 2003/08/23 v3.2 管理者による登録情報の確認(変更・削除キーや投稿者IPアドレスなど)および登録情報の変更・削除機能を追加。
  5. 2003/08/10 v3.1 v3.1スクリプト公開。
sayhappy_sp

  1. 2003/12/21 v3.1 スタイルシート適用と海外サーバ対応をlocaltimeからgmtimeに変更および有名人誕生日データ等の更新。
  2. 2003/08/10 v3.0 v3.0スクリプト公開。

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

スポンサーリンク

関連コンテンツ