PHP工房トップ

HOME > 【CalendarForm01】受付上限設定付き PHP予約・応募フォーム連動 営業日カレンダー フリー(無料)版

【CalendarForm01】(受付上限設定付き)予約・応募フォーム連動 営業日カレンダー フリー(無料)版

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

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

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

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

PC、スマホ(スマートフォン)、携帯(ガラケー)3デバイスに対応したフリー(無料)の(受付上限設定付き)予約・応募フォーム連動 営業日カレンダーCMSです。

このシステムだけで予約・申し込み(受付)数管理、予約のメール送信までの一切の機能を搭載しています。
詳細はサンプルデモにてご確認下さい。(ただし、申込み履歴や申込み内容の変更などの機能はございません)

管理画面で時間毎の受付状況の設定、時間毎の受付上限設定、営業日、休業日、定休日を設定、更新可能です。補足用のコメントも入力可能です。
時間毎ではなく、たとえば担当者名、担当者名+時間とすることなども可能です。ホテルの場合には部屋タイプ(ルームタイプ)ごとなど。

たとえば、レストランや飲食店、美容室や病院、歯科医院、スポーツクラブ、学校(スクール)、イベント、キャンプ場などの予約受付、申し込み受付に最適です。

また簡易的なもので構わない場合には、ホテルや旅館、ペンションなどの予約受付にも対応可能です。
この場合、時間ではなく、部屋ごとに、または部屋タイプ(ルームタイプ)ごとに受け付けることも可能です。

日毎、時間毎に受付数の上限設定が可能ですので、受付数が決まっている場合に便利です。受付数の上限に達したら自動的に受付終了となります。この上限設定はON、OFFが可能です。OFFにすれば無制限となります。
もちろん残り受付数は管理画面でいつでも個別に変更可能ですのでキャンセル、または予約に至らなかった場合には変更可能です。

いずれにしましても本格的な予約システムではなく、あくまでも簡易的な予約システムでもありますので、サンプルデモなどで十分に仕様をご確認の上で導入の判断を行なっていただければと思います。

主な機能と特徴

  1. フリー(無料)の受付上限機能付き営業日カレンダー兼予約受付、申し込みフォームプログラムです。もちろん商用サイトでもどんなサイトでも設置可能です。特になんら制限はありません。
  2. 管理画面から登録、編集できるので完全自動化(CMS)として運用可能です。
  3. 申し込み数上限を設定すれば上限に達したら申し込みボタンが非表示となります。(OFFにすることも可能)
    上限数は常に管理画面から変更可能です。※キャンセルや予約に至らなかった場合には随時変更ください。
  4. 時間リスト、または担当者名リストの設定が可能です。
    例 11:00、11:00~11:30、佐藤太郎、11時 佐藤太郎などリスト毎に予約設定が可能です。
  5. カレンダー、フォームのデフォルトデザインはシンプルですが、CSSを編集すればオリジナルデザインも可能。特に幅などは設置するページに合わせて変更して下さい。
  6. スマホ(スマートフォン)、携帯(ガラケー)用に最適化したファイルも同梱していますので、3デバイス同時更新が可能です。
  7. 設置が容易。任意のページに直接コピペで埋め込むことが可能です。コピペ箇所はコメントにて指示がありますのでご参考下さい。もちろんファイルに直接リンクしてもOKです。
  8. 休業日の他に定休日設定(たとえば毎週月曜日)が可能で、設定すれば全期間で有効になります。
    ※ただし隔週は不可なので隔週の場合は通常通り休業日として設定してください。
  9. カレンダーは何ヶ月後まで表示させるかなどの設定が可能です。(前月以降を表示するかどうかも設定可能)
  10. 祝日は赤字で表示され、GoogleAPIから自動で取得されます。こちらの詳細が以下「運用上の注意点」にありますのでご一読ください。 (※2015/11/25からオプションとなりました。デフォルトはOFF)
    ただし、この機能はPHP5.2以上のみ可能です。
  11. 日付ごとに補足コメントも入力可能です。
  12. Javascriptは使用していませんので、ブラウザ間の問題も基本的にはありません。
  13. パーミッションの自己診断も行います。データ保存ファイルのパーミッションの値が正常でない場合には管理画面で警告文が出ます。
  14. その他設定ファイルにて細かい設定が可能で実務での様々な運用に対応します。ファイル内のコメントを参考に設定下さい。
  15. フォーム項目の編集も容易です。既存の記述を参考に自由に編集下さい。連結機能も含み、フリー版のメールフォームプログラムと同じ仕様です。

サンプルデモ

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

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

「ページ埋め込み例」は任意のページにソースコードをコピペしたサンプルです。コピペ箇所はファイル内にコメントにて指示があります。 こういった運用を想定しておりますので出来る限りこの設置法をオススメします。

iframeタグ(インラインフレーム)での表示も可能ですが、高さが内容に応じて変わるため、スクロールバーが出る可能性があります。(スクロールバーを非表示にもできますが、その場合内容の一部が切れてしまう可能性があります)
カレンダーの幅は自由に変更可能です。(デフォルトは100%)カレンダーはシンプルなHTMLのタグです。CSSにて自由に設定下さい。(ソースを表示して各タグ、class等を確認しつつ設定下さい)

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

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

ダウンロード

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

【CalendarForm01】ダウンロード 


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

設置方法

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

1.ファイル構成を確認し、表示側の設定を行う(既存ページへの埋め込み等)

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

pc.php PC用のカレンダー、及びフォームを表示するファイルです。実際にはこれを任意のページの任意の箇所にコピペで埋め込むことになると思います。ただし、埋め込み先のページは拡張子が.phpでかつ文字コードがUTF-8である必要があります。見た目等はCSSで自由に調整して下さい。コピペ箇所はコメントにて指示があります。
またはこのファイル自体に既存のページのhtmlをコピペする形でももちろんOKです。
またもちろんこのファイルに直接リンクする形で運用してもOKです。これが最も手っ取り早いですが、見た目が。。。ですね。また、ファイル名は自由に変更可能です。
またはiframeタグ(インラインフレーム)でこのファイルを読み込んで表示してももちろんOKです。iframeタグの例は下記にあります。

またフォーム項目もこのファイルに書かれてますので、必要に応じて既存の記述を参考に変更下さい。(実際の運用ではほとんどの場合変更する必要があると思います)
※フリー版のメールフォームと同じ仕様となります。
sp.php スマホ用のカレンダー、フォームを表示するファイルです。
スマホ用も任意のページにコピペすることもできますが、このファイルに直接リンクする形でも良いかと思います。すでにjQueryMobileで見た目は調整済です。もちろん必要に応じてHTML、CSS等は自由に調整して下さい。
スマホ版を導入しない場合はこのファイルは不要です。削除OKです。(ファイル名は自由に変更可能です。)
こちらも必要に応じて項目を編集下さい。
i.php ガラケー用のカレンダー、フォームを表示するファイルです。このファイルに直接リンクする形が良いかと思います。必要に応じて見た目等は自由に調整して下さい。
ガラケー版を導入しない場合はこのファイルは不要です。削除OKです。(ファイル名は自由に変更可能です。)
こちらも必要に応じて項目を編集下さい。
calendar_form/ アップの際にはこのフォルダごとアップください。
┗ Readme.txt 設置法、利用規約など。
┗ style.css pc.php用のCSSです。必要に応じて変更下さい。
┗ admin/  
 ┗ index.php 管理画面です。登録や変更を行います。クライアントにはこのURLだけを教えることになるかと思います。
 ┗ config.php 設定ファイル。管理画面ログイン情報の設定やその他各種オプション設定が可能です。 UTF-8に対応したエディタソフトで開きコメントを参考に設定下さい。(エディタソフトはTeraPad推奨ですが特に問いません。DWでもOK)
 ┗ その他ファイル すべて必要なファイルになりますが意識する機会はないと思います。特に触らずそのままアップ下さい。特に「copy.inc」は触らないで下さい。システム不具合が発生する可能性があります。
┗ data/ データ保存用ディレクトリ(パーミッションを777等書き込み可能なものに)
 ┗ holiday_set.dat 休業日データを保存するファイル
(パーミッション666等書き込み可能なものに)
 ┗ closed.dat 定休日データを保存するファイル
(パーミッション666等書き込み可能なものに)
 ┗ comment_set.dat コメントデータを保存するファイル
(パーミッション666等書き込み可能なものに)
 ┗ time_list.dat 時間リストを保存するファイル
(パーミッション666等書き込み可能なものに)
 ┗西暦_holiday.dat 祝日データを自動取得する設定にした場合のみです。(デフォルトではOFF)またダウンロード直後は存在しません。サーバーにアップロード後、初回アクセス時に自動生成されます。
祝日データを保存するファイルです。年が切り替わるタイミングでGoogleAPIより当年、翌年、前年分の祝日データを自動で取得、保存します。Googleの仕様により祝日データが正確では無い場合は直接編集も可能です。登録データを参考に変更下さい。
 ┗ reserv/ 予約カウント数保存用ディレクトリ
(パーミッションを777等書き込み可能なものに)
┗ mail/ mail.phpがPC用のメール送信用プログラムです。
sp.phpはスマホ用のメール送信用プログラムです。
mb.phpはスマホ用のメール送信用プログラムです。
※いずれも確認画面のデザインを変更したい場合にはファイル内のコメントを参考に変更下さい。
インラインフレーム使用時のiframeタグ

推奨はしませんが、既存のページをhtmlのままで運用したいなど、どうしてもインラインフレームで表示されたい場合には以下タグを参考下さい。

以下のタグを表示させたい場所に貼り付ければOKです。必要に応じて幅、高さ、パス等を調整してください。
スクロールバーを出したくない場合は高さは多めに指定すると良いかもしれませんが、どの程度になるのかを想定するのは困難です。

2. 必須設定、オプション設定を設定する

admin/config.phpをエディタソフトで開き、「必須設定」の箇所を設定してください。
※メモ帳は使用禁止です。ファイルが壊れます。

特にログインID、パスワードの初期値は
ID:admin
パスワード:1397
になっています。必ず変更してください。
その他必要に応じてコメントを参考に設定してください。

3. FTPでアップ

calendar_form01フォルダの中の「calendar_form」フォルダごとサーバーにアップし、上記でパーミッション変更が必要なファイル、ディレクトリのパーミッションを変更下さい。
カレンダーを埋め込んだページもアップして下さい。
必要に応じてpc.php、i.php、sp.phpもアップ下さい。
これで設置は完了です。

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

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

ブラウザで「あなたのサイトのURL」/calendar_form/admin/ を表示し、管理画面にログインし、登録を行ってみてください。正常に登録、編集できればOKです。休業日、定休日設定等も確認下さい。
埋め込んだページもブラウザで確認してみて下さい。
登録データが反映されていればOKです。
パーミッションが適切でない場合、その旨メッセージが出ますので、それに合わせて設定下さい。

5. ページの調整

まずはフォーム項目を必要に応じて編集下さい。既存の記述を参考に設定下さい。変更はフォーム部分のみでOKです。その他の変更は不要です。(ただし、必須設定などは必要に応じて設定下さい)
項目を変更してもすべて自動で取得、送信されます。このあたりはフリー版のメールフォームと同じ仕様になります。

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

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

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

フォーム項目の変更について

※ここで言う「フォーム」とはカレンダーから「予約する」押した後に移動し、名前やメールアドレスを入力するページです。(念のため)
デフォルトのメールフォームではおそらく不要な項目があったり、追加、変更したいことがほとんどでしょう。
このフォームで使われているメールフォームプログラムは当サイトで配布しているメールフォームをベースにしておりますので、ほとんどの機能は同じです。

項目の変更自体はいたって簡単です。(ただし、最低限のHTMLの知識は必要です)
フリー版の使用経験があれば、同じ感覚でOKです。

フォーム部分のソースを確認いただくと分かりますが、
inputタグなどで
name="お名前"
などとなっているのがわかりますが、 この場合、「お名前」と入力データがセットで送信されます。
要するに、上記の場合で「テスト太郎」と入力された場合、確認画面や送信されるメールでは
【 お名前 】テスト太郎
のようになるということですね。 またこのプログラムはフォーム項目を自動ですべて取得、送信してくれますので、 あなたはこのフォーム部分のみ変更すればいいだけです。
※要するにフォーム内の「name="○○"」のすべてを送信するということです。
※フォーム内とは<form>タグから</form>タグまでを指します。

ですので、不要なものはまるっと削除すればいいですし、 追加したい場合には、既存の記述をコピペするなどで
name="お名前" → name="フリガナ"
のように変更すればOKということですね。
ただし、name="○○" の○○部分には使用できない文字列があります。
半角スペース、機種依存文字、特殊な記号などは使用できませんのでご注意下さい。

またテキストフィールドである「input type="text"」以外にもすべてのフォームパーツが使用できます。
※ただし、チェックボックスのみイレギュラーで、デフォルトのフォームの記述を見ていただくと分かりますが、
name="○○[]" 
のように後ろに[]が付いているのがわかると思います。
チェックボックスの場合のみname属性の値の後ろに[]を記述するルールが有りますのでご注意下さい。
※尚、添付ファイル機能の「type="file"」は使用できません。

【注意】項目の必須設定については設定ファイルにて管理されていますので、 必須項目を変更する場合などは設定ファイル(config.php)にて設定下さい。 ちろんフォーム側でrequire属性を使ったり、JSでの必須設定でもOKです。(ただしその場合でもスパム防止の観点からPHP側でも必須設定を併用して設定されることをオススメします)

フォーム(input、select、textarea)の基礎知識についてのページでもより詳しく解説していますので、ご参考下さい。

フリー版メールフォームはこちら

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

デフォルトでは全ページ下部に著作権表示リンク(クレジット)があります。
この著作権表示リンク(クレジット)の削除には1サイトあたり2000円+消費税の使用料金が必要になります。
お支払いいただいた場合、この表示が全ページから削除されます。 2サイト目以降は都度料金が必要になります。
※すでに導入済みの場合でも問題ありません。システムと無関係のファイルをアップいただくだけです。

よくある質問

よくある質問(カレンダーフォーム独自)

上記のよくある質問はカレンダープログラム共通のものとなります。

不具合、バグ等について

十分な検証は行っておりますが、リリース直後は未知の不具合が無いとも限りません。もし不具合などを発見されましたら遠慮なくお問い合わせ下さい。不具合かどうか分からないようなものでも遠慮なくお問い合わせ下さい。
お問い合わせはこちら

動作確認済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系、スマイルサーバー、ファーストサーバで問題がある場合はこちらも参照下さい

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

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

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

運用上の注意点

祝日自動取得について

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

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

予約時間リストが「15」を超える場合

PHP5.3以降の場合でリストが15程度を超えると、そのままでは更新ができない問題が発生しますので、以下ページを参考にご対応下さい。
http://www.php-factory.net/trivia/14.php
※追記 ロリポップ系やCPIなどサーバーにWAFが導入されている場合、更新時に403エラーが出ることがあります。詳細はよくある質問箇所をご参照下さい。

管理画面での予約可能数の変更について

管理画面を開いている間にも当然予約が発生している可能性があります。残り予約可能数はリアルタイムでは反映されませんので、表示されている予約可能数と実際の予約可能数が異なる場合があります。更新時には必ず管理画面上部の「最新の状態に更新」を押してから速やかに更新して下さい。(でないと予約可能数を超えた申し込みが発生するリスクがあります)


管理画面にログインする。その時点での予約可能数が10だった。
その直後にユーザーの申し込みが発生し、実際の予約可能数は9となる。
ところが、管理画面上では10のまま。
そのまま登録ボタンを押してしまうと予約可能数は10となり、実際の数字と合わなくなる。

こういったことが発生するリスクがあるため、
1,出来る限り前月までに予約可能数を設定しておく。
2,やむを得ず予約可能数を変更する場合は、出来る限り予約が発生する可能性が低い時間帯で、かつ管理画面上部の「最新の状態に更新」を押してから速やかに更新する。
ということを徹底して下さい。

複数人での更新作業について

複数人で更新している場合、タイミングなどによってはいわゆる先祖返りのリスクがありますので、 できる限り担当は1人とすることをお勧めします。


たとえばAさんとBさんが更新を担当しているとします。
AさんとBさんがほぼ同時に管理画面にログインしたとします。

Aさんが予約可能数の数字を変更して登録ボタンを押します。
その後Bさんが予約可能数の数字を変更して登録ボタンを押します。

この場合、Aさんの作業はなかったことになります。
※Aさんからしたら変更したはずが変更されていないということになります。
特定の1人のみで更新されるか、ある程度ルールを定めて、同時に更新作業を行わないようにする必要があります。

サポートについて

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

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

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

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

ご利用規約

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

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

更新履歴

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

2020.07.30
認証不備の脆弱性の指摘と修正方法について

-- 脆弱性に該当する製品名およびバージョン
※ver.1.0.3及びそれ以前

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

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

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

-- 脆弱性への対応方法と適用方法
以下手順で修正を行なってください。

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

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

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


session_name('PHPSystem123');
session_start();


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

以上、これだけです。

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

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

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

2020.07.20 メジャーアップデート(ver1.0.4)を行いました。
スパム対策とセキュリティの強化、及び機能追加のアップデート
基本的にはメールフォームプログラムのフリー版に準じています。

1,ワンタイムトークン(PHPセッション)によるスパム対策、CSRF対策(デフォルトはON)
2,管理者宛て、及び自動返信メールの送信元メールアドレスを設定できるようにしました。
3,-fオプションによるエンベロープFrom(Return-Path)の設定(デフォルトはOFF)を追加
4,機種依存文字の変換(常にON)
5,ログイン認証時に使用するセッション名を変更。任意の文字を設定可としました。
6,PHPのバージョンが最新の7.4の場合に特定の環境で「Deprecated」エラーが出る問題を修正しました。
PHPのバージョンが7.4以降の場合、get_magic_quotes_gpc()関数が非推奨となったため、環境によってはDeprecatedエラーが表示される場合があるためです。
旧バージョンをお使いの方でエラーが出ている場合は、↑のよくある質問→「確認画面での不具合」の箇所に対処法を掲載していますのでご参考下さい。

2018.11.02 軽微なバグの修正を行いました。
パラメータを改ざんすることで、カレンダーでは表示されていない日付を指定した場合で、かつその日付が「受付中」の設定となっている場合に、申し込みが完了できてしまうバグを修正しました。
パラメータを改ざんされることも想定し、その日付が受付中かどうかは送信直前にチェックしていましたが、その日付がカレンダーに表示されている日付かどうかのチェックが漏れておりました。
※さらに詳しい内容はバグの性質上伏せます。

そういったことを意図して行うユーザーは極々稀ということもありますし、設定状況によってはそもそもそういったことが出来ないということもあり、実際にそういったことが実行される可能性は極めて低いと思われますが、管理者側が意図していない申込みが出来てしまう可能性があるという点においてはバグと言えるものでした。
ご報告いただきましたK様にはこの場を借りて感謝申し上げます。

2016.08.05 メジャーアップデート(ver1.0.3)を行いました。(下位バージョンとの互換性はありません)
※プログラムのバージョン情報は設定ファイル(config.php)内の上部に記載されています。
修正点
1,メールフォームプログラムにある「項目連結、文字列追加(単位など)機能」をこちらにも実装しました。
項目連結についてはこちらをご参照下さい
※あくまでもオプション機能です。必要に応じてご使用下さい。
2,日毎に「受付中」、「未選択」の一括変更が可能となりました。(以前は月毎のみでした)
3,他のプログラムとの競合を防ぐため一部の関数名を変更しました。そのため下位バージョンとの互換性はありません。

2015.10.28 アップデート(ver1.0.2へ)を行いました。
修正点
スマホ用のフォーム(sp.php)で、Android端末かつブラウザがChromeの場合に、フォーム→確認画面→戻るのページ遷移で選択日付がリセットされてしまうものを修正(これを機に3デバイスとも日付の送信方法をPOSTからGETに変更)
※変更したファイル:function.phpとpc.php、sp.php、i.phpを変更。

2015.09.07 定期アップデート(ver1.0.1へ)を行いました。
改善点
1,日付未選択チェック(主にスマホ版などでフォームでブラウザの更新を実行した際に日付が未選択となってしまい、日付なしで送信できてしまったものを送信できないよう修正しました)
2,選択した日付に曜日表示のON、OFF機能を追加(デフォルトはOFF)
3,選択日付の確認画面、送信メールでの項目名設定を可能に。(デフォルトは「ご選択日時」)
4,受付中でなかったら送信処理直前に強制終了する。(ユーザーがフォームに入力中に管理者が管理画面で「受付終了」としたとしても送信できてしまっていたものを修正しました)

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

2015.06.09 
1,環境によってはスマホ版完了ページのトップへ戻るリンクで、正常にページ遷移できない可能性があるものを修正しました。(aタグへのexternal属性追加)
ご連絡いただいたK様にはこの場を借りて感謝申し上げます。

2,管理画面の「残り予約可能数」のプルダウンで数字変更時には手動でチェックを入れる必要がありましたが、自動でチェックが入るように変更しました。

3,任意のURLを指定して完了ページにリダイレクトさせる設定の場合に、デバイスごとにURLを指定可能としました。

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

2014.11.09 
スマホ版でフォーム入力→確認画面→戻るの操作を行った際にフォーム画面ではなくカレンダーに戻ってしまう不具合を修正しました。 ご報告いただきましたH様にはこの場を借りて感謝申し上げます。

2014.09.24 
ご要望の多かった当日の○日後から予約可と設定できるよう修正しました。設定ファイルにて任意の値を設定可能です。たとえば1日後から、2日後からなど自由に設定できます。デフォルトは「0」となり、今まで通り当日から予約可能です。

2014.08.25 
1,PHP5.3.9以降の場合で、予約時間リストを3つ以上設定した場合、「受付中」や「休日」設定などの登録が行われない不具合を修正しました。
原因はPHP 5.3.9以降ではphp.iniの設定で「max_input_vars」という項目が追加されました。これは一度にPOSTできる数を設定するものになりますが、デフォルトでは1000に設定されています。しかしながら、予約時間リストを増やすことでシステム上どうしても大量のPOSTデータが発生し、結果この上限1000を超えてしまっていました。管理画面では当月分以外のデータも更新する仕様としていましたが、当月分のみ更新するよう仕様変更することでPOST数を削りました。これで10項目程度までは問題は出ません。(15個以上で1000を超えます)
使い勝手や使用方法、設置法などに変更はありません。 ご迷惑をおかけし申し訳ございませんでした。
メールにてご報告いただいたT様にはこの場を借りて感謝申し上げます。

2,管理画面でそのページのすべてのプルダウンを一括で「受付中」、「未選択」にするボタンを表示するオプションを追加しました。設定ファイルにて設定可能です。デフォルトはOFF。

2014.07.16 メールフォームで確認画面非表示と設定した場合、予約数のカウントダウンが行われない不具合を修正しました。(デフォルトは表示するです) ご迷惑をおかけし申し訳ございませんでした。

2014/4/30 Beta版としてフリー版のプログラム配布を開始

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

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

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

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

テロップCMS(無料版)

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

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

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

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

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

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

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

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

その他

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

役立つかも?なもの

豆知識や役立ち事など

PHPについて

各種情報