PHP工房トップ

HOME > 【Calendar01】PHP営業日・スケジュールカレンダーフリー(無料)版

【Calendar01】(3デバイス対応)PHP営業日・スケジュールカレンダーフリー(無料)版

PHP営業日カレンダー フリー(無料)Beta版デモ

PC、スマホ(スマートフォン)、携帯(ガラケー)3デバイスに対応したフリー(無料)のシンプルスケジュールカレンダー・営業日カレンダーCMSプログラムです。管理画面で営業日、休業日、定休日を設定、更新可能です。

お店や会社、スポーツクラブ、学校(スクール)などの営業日スケジュールカレンダーに最適です。
クライアントが更新することを想定しているので、シンプルで直感的な更新が可能です。

【2024/05/09 重要なお知らせ】
祝日の自動取得機能が正常に動作しない問題。

対象バージョン:ver1.0.2以下。ver1.0.3以降は問題ありません。
※バージョンはconfig.phpの上部に記載されています。
症状:祝日の自動取得が行えない。
原因:GoogleカレンダーAPIの仕様が変わったためと思われます。
対象者:祝日の自動取得機能をONにしている方のみ。(config.phpでON、OFF可能。デフォルト値はOFF)
修正方法:以下をご参考の上で修正してください。
設定ファイルconfig.phpを開き、以下の記述をファイル内検索してください。

//$holidays_id = 'japanese__ja@holiday.calendar.google.com'; // Google 公式版日本語

この先頭のスラッシュ2つ「//」を削除してコメントアウトを解除(有効化)してください。
これだけです。

主な機能と特徴

  1. 無料(フリー)の営業日・スケジュールカレンダープログラムです。もちろん商用サイトでもどんなサイトでも設置可能です。
  2. 管理画面から登録、編集できるので完全自動化(CMS)として運用可能です。
  3. スマホ(スマートフォン)、携帯(ガラケー)用に最適化したファイルも同梱していますので、3デバイス同時更新が可能です。スマホ、ガラケーは表形式ではなく縦長のリスト形式で表示されます。
    PCは表形式、リスト形式を選択可能です。デフォルトは表形式
  4. デフォルトデザインはシンプルですが、CSSを編集すればオリジナルデザインも可能。
    (変更にはHTMLやCSSの基本知識が必要です)
  5. 設置が容易。ページ内でカレンダーを表示させたい場所にiframeタグ1行を記述すれば表示側の設置は完了します。iframeタグなので既存のページが.htmlでもOKです。
  6. 定休日設定(たとえば毎週月曜日)が可能で、設定すれば全期間で有効になります。
    ※ただし隔週は不可なので隔週の場合は通常通りチェックにて反映してください。
  7. カレンダーを何ヶ月後まで表示させるかなどの設定が可能です。(過去を表示するかも設定可)
  8. 祝日は赤字で表示され、GoogleAPIから自動で取得されます。こちらの詳細が以下「運用上の注意点」にありますのでご一読ください。 (※2015/11/25からオプションとなりました。デフォルトはOFF)
    ただし、この機能はPHP5.2以上のみ可能です。
  9. Javascriptは使用していませんので、ブラウザ間の問題もありません。
  10. パーミッションの自己診断も行います。データ保存ファイルのパーミッションの値が正常でない場合には管理画面で警告文が出ます。
  11. その他設定ファイルにて詳細設定が可能です。ファイル内のコメントを参考に設定下さい。

サンプルデモ

ユーザ名:admin
パスワード:1397
※自由に登録、編集して下さい。

PCのみ表示形式を表(テーブル)形式、リスト形式から選択可能です。(スマホ、ガラケーはリスト形式)
デフォルトは表(テーブル)形式です。設定ファイルにて変更可能です。


iframeタグ(インラインフレーム)で表示しています。実際は既存サイトなどに埋め込むことになるかと思います。
カレンダーの幅は自由に変更可能です。(デフォルトは100%)カレンダーはシンプルなHTMLのタグです。CSSにて自由に設定下さい。(ソースを表示して各タグ、class等を確認しつつ設定下さい)

携帯、スマホはQRコードを読めば実機でも確認できます。スマホ、携帯は既存ページ内に表示させるよりもリンクさせる方法が良いでしょう。

スマホ用QR
QRコード
携帯用QR
携帯版QRコード

ダウンロード

事前にご利用規約をご確認下さい。
クリックで自分のPCに保存して下さい。または右クリック⇒「対象をファイルに保存」

【Calendar01】ダウンロード 

関連プログラム(その他の機能搭載版)

設置方法

ファイルの文字コードはUTF-8です。必ず対応したエディタで開いてください。
メモ帳(UTF-8非対応)は使用禁止です。ファイルが壊れます。TeraPad(無料)やDreamWeaver等で開いてください。必ずUTF-8のBOM無し(UTF-8N)で保存して下さい(いずれもデフォルトではBOM無しで保存されます)。
BOMについて詳しく知りたい方はこちら
※PHPではスラッシュ2回「//」の後からその行の末尾までがコメント扱いとなります。「#」、「/**/」もです。

1.ファイル構成を確認し、表示側の設定を行う(iframeタグを埋め込む等)

ダウンロードしたzipファイルを解凍するとcalendar01フォルダがあります。
赤字のファイルが触るファイルです。その他は基本的には触らずOKです。

・index.php PC用のカレンダーを表示するファイルです。実際にはこれをトップページ、または任意のページの任意の箇所にiframeタグで読み込むことになると思います。見た目等はCSSで自由に調整して下さい。
インラインフレーム使用時のiframeタグ
以下のタグを表示させたい場所に貼り付ければOKです。必要に応じて幅、高さ、パス等を調整してください。
スクロールバーを出したくない場合は高さは多めに指定すると良いです。

・Readme.txt 設置法、利用規約など。
・admin.php 管理画面です。登録や変更を行います。クライアントにはこのURLだけを教えることになるかと思います。
・complete.php 「更新」による2重登録防止用のリダイレクトファイルです。そのまま置いておきましょう。
・config.php 設定ファイル。管理画面ログイン情報の設定やその他設定、関数記述など
・style.css admin.php、index.php、sp.phpのスタイルを記述してます(もちろん独自のCSSでもOKです)必要に応じて自由に変更して下さい。
・data/ データ保存用ディレクトリ(パーミッションを書き込み可能なものに)
 ┗ holiday_set.dat 休業日データを保存するファイル
(パーミッション666等書き込み可能なものに)
 ┗closed.dat 定休日データを保存するファイル
(パーミッション666等書き込み可能なものに)
 ┗西暦_holiday.dat ダウンロード直後は存在しません。サーバーにアップロード後、初回アクセス時に自動生成されます。
祝日データを保存するファイルです。年が切り替わるタイミングでGoogleAPIより当年、翌年、前年分の祝日データを自動で取得、保存します。Googleの仕様により祝日データが正確では無い場合は直接編集も可能です。登録データを参考に変更下さい。
sp.php スマホ用のカレンダーです。このファイルにリンクさせる形になるかと思いますが、iframeで読み込んでもOKかもしれません。(ただし、スマホ全機種でのiframeタグ対応は保証できませんのでリンクさせるのが無難です)
i.php 携帯(ガラケー)用のカレンダーです。携帯はiframeに対応していな機種がほとんどかと思うので、このファイルにリンクさせる形になるかと思います。

 

2. ユーザID、パスワードを設定する

config.phpをエディタソフトで開き、ログインのためのID、パスワードを変更してください。
初期値は
ID:admin
パスワード:1397
になっています。必ず変更してください。その他必要に応じてコメントを参考に設定してください。

3. FTPでアップ

「calendar01」フォルダごと全ファイルをアップし、
「data」ディレクトリのパーミッションを書き込み可能な755 or 777等に設定(サーバーによる)

data/holiday_set.datのパーミッションを書き込み可能な666等に設定(サーバーによる)
data/closed.dat.datのパーミッションを書き込み可能な666等に設定(サーバーによる)
にしてください。
もちろんカレンダーを埋め込んだページもアップして下さい。これで完了です。

各パーミッションの適切な値はサーバーのマニュアル等を参考に変更下さい。
サーバーによっては値が違う、または変更の必要自体無いこともあります。
もしパーミッションの設定が間違っていた場合ですが、すべての環境での保証はありませんが管理画面にてその旨警告が表示されるよう設定しています。またもしパーミッションが間違いの場合には「data」ディレクトリの場合、祝日データが取得できない、また、holiday_set.dat、closed.datの場合、新規登録時にエラーで登録自体ができません。要するにまともに動かないのでテスト段階ですぐに気付けます。
逆にそのようなことがない場合は適切なパーミッションになっていると考えてOKです。
ちなみにエックスサーバーの場合、今のところパーミッション変更は不要です。

4.登録テストとブラウザで結果確認

ブラウザで「あなたのサイトのURL」/calendar01/admin.phpを表示し、管理画面にログインし、登録を行ってみてください。正常に登録、編集できればOKです。定休日設定も確認下さい。
ifirameなどで埋め込んだページもブラウザで確認してみて下さい。
登録データが反映されていればOKです。

5. ページの調整

設置するページやその他必要に応じてスタイルシート、HTML等で見た目の調整を行ってください。じゆ~です!
その他htmlソースを見ると分かりますが、タグや各セル、各曜日にはそれぞれclassを振っていますので、
style.cssのCSSを変更して自由にデザイン下さい
また、class="youbi_0"が日曜日でそのまま曜日ごとに連番が振られclass="youbi_6"が土曜日となっています。
カレンダー部分のhtmlを変更したい場合はconfig.php内下部に各デバイス(PC用、スマホ用、携帯用)ごとに記述しています。カレンダーのタグや「日」、「月」などのテキストを変更したい場合直接変更してください。

これら設置法などはダウンロードファイル内のReadme.txtにも記述しています。

充分な検証は行っておりますが、配布直後は未知の不具合等が無いとも限りませんので、気になる点などがあれば遠慮なくお問い合わせ下さい。
また使用感などもいただけますとものすごーくありがたいです^^

著作権表示削除について(2,000円+消費税/1サイト)

デフォルトではページ下部に著作権表示リンクがあります。
これらの著作権表示の削除には1サイトあたり2000円+消費税の使用料金が必要になります。
お支払いいただいた場合、この表示が削除されます。 2サイト目以降は都度料金が必要になります。

既存のサイトの任意のページに直接埋め込みたい場合

calendar01フォルダ内のindex.phpの必要な箇所(2箇所)をコピペすればOKです。コメントも書いておりますので参考下さい。 ただし、埋め込み先のページは拡張子が.phpでかつ文字コードがUTF-8である必要があります。
また
require_once('config.php');
の箇所は設置場所によって変更下さい。単純にconfig.phpへの相対パスを書けばいいだけです。(絶対パス不可)
例 require_once('calendar01/config.php');
CSSファイルへのリンク部分も必要に応じて変更下さい。もちろんオリジナルでもOKです。

GoogleAPIの仕様変更に伴う既存ファイルの修正方法

2014/11/25以前にダウンロードされた方は以下のページにまとめしたのでご参照下さい。
GoogleAPIの仕様変更に伴う既存ファイルの修正方法

運用上の注意点

2014/11/17からのGoogleAPIの仕様変更に伴い、GoogleAPIキーが必要になりました。お手数ですが、事前にAPIキーの取得が必要になります。取得方法は以下ページにまとめておりますのでご参考下さい。
GoogleカレンダーAPIキーの取得手順

祝日設定は不要、またはGoogleAPIキーの取り方が分からない、または面倒な方はそのままでも運用は問題ありません。デフォルトはOFFです。(祝日が赤字にならないだけです)または祝日用のデータファイルをこのページからダウンロードいただいて手動でdataディレクトリにアップしても反映可能です。

動作確認済PHPバージョン

PHP4.3.9~PHP8.1

動作確認済レンタルサーバー

  • エックスサーバー [PR]
    ※個人的にはここが好きで、もうずっとここです。このサーバーで困ることはまずないでしょう。
  • ロリポップ! [PR]
    ※ただしここはWAF機能がONの場合、CMSプログラムで問題が発生する可能性が高いです。詳細はこちら
    またサーバーがブラックリストに登録されてしまいメール系のプログラムで受信できない大問題も多々確認されています。詳細はこちら
     ただコスパ的には有りだと思います。
  • カゴヤのレンタルサーバー [PR]
    ここは高機能、高スペック、良心的な価格でありながら風俗系のサイトがOKという非常に貴重なサーバーです。個人的には風俗系のサイトであればこのサーバー以外の選択肢はないと思ってます。
  • さくらのレンタルサーバ [PR]

その他一般的なレンタルサーバーであれば問題なく動作するはずですが、
すべての環境(サーバー)での動作を保証するものではありませんのでご了承下さい。

問題が出る可能性が高い、またはそのままでは必ず問題が出ることが分かっているサーバー

※現状私自身が把握している範囲です。(実際に確認していますのでちゃんと根拠もあります)
1,Yahoo系(ジオプラス、ウェブホスティングとも)※Softbankも含む
2,KDDI系(CPI含む)
3,NTT系(WebArena(suiteX)、NTTビズリンク(BizLink))
※プロバイダー系は特に問題が多いです。(個人的には絶対に借りてはいけないと考えています)
4,スマイルサーバー
5,ファーストサーバ

特にCPI、NTT系、スマイルサーバー、ファーストサーバで問題がある場合はこちらも参照下さい

経験上、結局は「餅は餅屋です」。プロバイダー系はプラン、金額に関係なく特に問題が多いです。サーバーの問題で時間を取られるのは非常に無駄ですし、その先ずっと影響しますのでサーバー選びは慎重にされることをオススメします。 特に理由がなければあえてこれらのサーバーは借りないほうが得策でしょう。高いから良い、安いからダメという安易なものでもありませんので難しいところですね。(まぁ安いには安いなりの理由があるのですが・・)

よくある質問

サポートについて

HTMLやCSSなどをある程度理解されている方を対象としています。
カスタマイズ方法などのサポートは行っておりませんのでご了承ください。
修正方法などに関するサポートは有料にて承ります。
管理人1人で運営していますので。。。

設置の際の不明点や気になった点、不具合等があれば遠慮なくなんでもご連絡ください。

カスタマイズ、設置代行について

カスタマイズ(改造等)方法などのサポートは行っておりません。
カスタマイズや仕様変更、設置代行などは2,000円~の有料にて承ります。

ご利用規約

・無料版プログラムはフリーウェアです。ただし、著作権は放棄するものではありません。
・プログラムの著作権表示リンク(ページ下部にある当サイトへのリンク)を無断で削除することはできません。
(一律2,000円+消費税の削除依頼をいただいた場合を除く)
・プログラムの再配布、再販売は禁止です。
 ※ただしクライアントへの納品などでシステム費用、設置費用として請求されるのは問題ありません。
・プログラムによって何らかの不利益、損害が生じても一切の責任を負いません。
 あらかじめご了承の上ご使用ください。
 もし何らかのトラブルがあった場合には、ご相談いただければ解決策が見つかるかもしれません。
 (クライアントへの原因の説明など)
・プログラムは全ての環境(サーバー)での動作を保証するものではありません。
・改変等は自由ですが、自己責任でお願いします。
・有料版をご購入いただいた場合、初期不良を除き、ご使用後の返金には応じ兼ねます。
・有料版(著作権リンク削除含む)は1サイト(同一ドメイン)内であれば複製の上で複数利用可能です。
 2サイト目以降は都度サイトより購入申込みが必要になります。
 ※サブドメインはその性質上、別サイト(別ドメイン)とみなします。  

 ダウンロードいただいた時点で利用規約に同意したものとみなされます。

更新履歴

2024.05.09 ver1.0.3リリース
祝日の自動取得機能が正常に動作しない問題の改善。
ver1.0.2以下の場合で祝日の自動取得機能をONにしている場合は修正が必要です。
ページ上部に記載しておりますのでご確認いただければと思います。

2021.05.20 v1.0.2リリース
管理画面における反射型クロスサイトスクリプティングの指摘と修正方法について

-- 脆弱性に該当する製品名およびバージョン
※ver.1.0.0~ver.1.0.1
(バージョンはadmin/include/config.php内の上部に記載しています)

確認済対象ブラウザ:(Firefox/Chromeで確認)

-- 脆弱性の内容
管理画面にアクセスしたユーザーを悪意のあるページに誘導することで、ウェブブラウザ上で任意のスクリプトが実行される可能性。
この条件が成立するには管理画面にログインしている管理者を特定のページに誘導する必要があることから、実際に発生する可能性は限りなく低いと思われます。これまでに実害の報告などは届いておりません。

ただ念の為、下記手順にて修正を行なっていただければと思います。

-- 脆弱性への対応方法と適用方法
最新版をダウンロードの上で設定ファイルconfig.phpのみを差し替えていただくか(設定が初期化されます)、
または以下手順で修正を行なってください。

config.phpの723行目付近の以下の箇所。
※ファイル内で1箇所しかありませんので間違うことはありません。

$scheduleCalendar = '<form action="?ym='.$getYm.'" method="post">';

↓以下のように修正いただくか、そのままコピペください。

$scheduleCalendar = '<form action="?ym='.h($getYm).'" method="post">';

※「$getYm」をh()で囲むだけです。

以上、これだけです。念の為、管理画面で更新などの操作を行なってください。
特に問題がなければ完了です。もし万が一問題が発生した場合は戻していただくか、お問い合わせください。

-- 謝辞
apple502j様並びに情報処理推進機構 IPA様、JPCERT/CC 脆弱性コーディネーショングループ様にはこの場を借りて感謝申し上げます。

2020.07.30 1.0.1 リリース
脆弱性対策に伴うコード修正
クロスサイト・リクエスト・フォージェリ(CSRF)対策及びセキュリティ強化のためセッション名の変更。

-- 脆弱性に該当する製品名およびバージョン
【Calendar01】(3デバイス対応)PHP営業日・スケジュールカレンダーフリー(無料)版
【Calendar02】PHP営業日・スケジュールカレンダー(テキスト入力付) フリー・無料版
※ver.1.0.0(2020/07/30以降にダウンロードされた方は該当しません。)
(バージョンはReadmeまたはconfig.php内に記載しています)

確認済対象ブラウザ:(Firefox/Chromeで確認)

-- 脆弱性の内容
1,クロスサイト・リクエスト・フォージェリ(CSRF)
管理画面へログイン中の管理者が悪意のある第三者が作成した罠ページへ誘導された場合に、特定のリンクをクリックさせることによって任意のスクリプトを含む文字列が投稿され、閲覧者側で任意のスクリプトが実行される可能性。

2,特定の条件下において、遠隔の第三者に管理者権限で当該製品にログインされる問題。
この条件が成立するには第三者があなたのサイトのサーバー上に無断でファイルを設置する必要があることから、この問題が実際に発生する可能性は限りなく低いと思われます。これまでに実害の報告などは届いておりません。

ユーザーにとって利便性が良いため、あえてそうしていたということもありますので、 非常に判断が難しいものでしたが、今回の指摘を真摯に受け止め、また利便性よりも安全性を優先するという判断としました。

-- 脆弱性への対応方法と適用方法
1,クロスサイト・リクエスト・フォージェリ(CSRF)
最新版をダウンロードいただき、既存のadmin.phpのみを差し替えて(上書き)下さい。
複数の複雑な条件が重ならない限り本脆弱性は発生しないため、設置中のものがすぐに攻撃対象となる可能性は低いと考えていますが、大変お手数おかけしますが出来る限りご対応頂きますようお願い申し上げます。
問題が出た場合にはお気軽にお問い合わせよりご連絡下さい。

2,特定の条件下において、遠隔の第三者に管理者権限で当該製品にログインされる問題。
以下手順で修正を行なってください。

1,admin.phpをエディタソフトで開いていただき、
session_start();」を見つけて下さい。(ファイル内に1箇所しかないため検索すればすぐに見つかります)

2,この「session_start();」の上に以下1行をコピペして下さい。

※「PHPSystem」部分の文字は変更して下さい。英数字のみとして下さい。


session_name('PHPSystem123');
session_start();


※順番に注意して下さい。必ずsession_start();の上に追加下さい。

以上、これだけです。

もしすでに「session_name()」がある場合はすでに対策済のバージョンですので変更不要です。

尚、当サイトの管理画面があるプログラムを複数設置している場合で一度のログイン認証で相互に行き来出来たほうが良い場合はsession_nameの文字列を同じものとして下さい。

-- 謝辞
ご報告いただきました「三井物産セキュアディレクション株式会社 東内様」、
並びに情報処理推進機構 IPA様、JPCERT/CC 脆弱性ハンドリングチーム様にはこの場を借りて感謝申し上げます。

2015.06.19
サーバーのPHPのバージョンがPHP4.○○の場合に管理画面で翌月、前月が「1月」と表示されてしまう。及び表示側で前月に戻れない不具合を修正しました。PHP5以上であれば問題はありませんでしたので、今現在設置中の方は特に問題はございません。
(今現在大多数のサーバーではPHP5以上のため基本的には問題ありません)
ご連絡いただきましたI様にはこの場を借りて感謝申し上げます。

2014.11.25 
2014.11.17からのGoogleカレンダーAPIの仕様変更に伴い、祝日データが自動で取得されない不具合を修正しました。2014.11.25以前にダウンロードされた方は大変お手数ですが、現在配布中の最新版をダウンロードいただくか、修正をお願い致します 。
GoogleAPIの仕様変更に伴う既存ファイルの修正方法
今後は祝日自動取得にGooglAPIキーが必要になります。→googleにて無料で取得できます。
または最新版に限りますが、設定ファイルでこの機能をOFFにし、このサイトから祝日用のデータファイルをダウンロードの上、手動でアップする方法もあります。またはそもそも祝日設定が不要であればOFFのままで運用可能です。

2014.02.28 Calenderのスペルが間違っていたものを修正しました。ソースコード内のスペルも変更しています。(Calender→Calendar)

2014.02.01 インラインフレーム(iframe)での設置のみを考慮していましたが、既存のページにも直接埋め込めるよう修正しました。但し埋め込み先のページの文字コードがUTF-8である必要があります。

2014.01.19 スマホ、携帯版は表形式ではなく、縦長のリスト形式で表示するよう修正。PCは表形式、リスト形式選択可能に(デフォルトは表形式)

2013/9/4 Beta版としてプログラムの配布を開始

PHPメールフォーム(無料版)

PHPメールフォーム(有料版)

新着情報・更新履歴CMS(無料版)

投票・アンケートシステム(無料版)

テロップCMS(無料版)

写真ギャラリーCMS(無料版)

営業日カレンダーCMS(無料版)

営業日カレンダーCMS(有料版)

カレンダー予約フォーム(無料版)

カレンダー予約フォーム(有料版)

リンク集ページCMS(無料版)

アクセスカウンター(無料版)

ダウンロードカウンター(無料版)

その他

メールフォームの各種カスタマイズならお任せ下さい
業務効率化が可能なPHPオリジナルCMS制作します

役立つかも?なもの

豆知識や役立ち事など

PHPについて

各種情報