【PKOBO_Gallery】PHP写真ギャラリーCMS フリー(無料)版
まえがき
これまで配布してきましたギャラリープログラムをフルリニューアルしました。以前のプログラムとの互換性はございませんのでご了承ください。
より設置しやすく、表示側もより簡単にカスタマイズしやすいよう、ソースコードもゼロから設計、開発しました。また今までに様々なカスタマイズ依頼、ご要望などをいただきましたが、それらほとんどの機能を実装しましたのでほとんどの要件に対応できると考えています。
サンプルデモがありますのでそちらで確認いただくのが最も手っ取り早いと思います。
投稿などもできますので、まずは触ってみてください。
設置もいたって簡単で、ある程度のhtmlの知識とFTPでなにかしらアップしたことがあれば可能です。
投稿は管理画面からブログのようにブラウザ上で完結しますので、クライアント側での更新も可能です。
※むしろそれを想定しています。
いちいちHTMLを書いて、リンク設定して~FTPでアップして~という作業がなくなり、作業効率を上げることができるCMSとして運用できます。
スマホ(スマートフォン)にももちろん対応しています。
こちらでも十分に検証を行なっておりますが、配布直後は未知のバグが無いとも限りません。不具合やお気づきの点がございましたら遠慮なくご連絡いただけますと幸いです。また使用感やこのページでの間違い、分かりにくい点等ありましたらお知らせいただけたら大変ありがたいです。いずれもお問い合わせよりご連絡いただければと存じます。
主な特徴
- 個人・商用問わずどんなサイトでも無料でご使用いただけます。
クライアントへの納品などでももちろんOKです。事前、事後の報告も一切不要です。
デフォルトでは全ページ下部に著作権リンク(クレジット)が表示されます。著作権リンク(クレジット)の削除申請については2,000円+消費税となります。こちらよりお申し込みください
- レスポンシブ化も実施していますのでスマホにも対応します。
ただ、CSSは必要最低限としていますので、必要に応じて調整してください。
- データベースは不要です。PHPが動作する環境であればほとんどのサーバーで動作し、また軽量なため軽快に動作します。(WPなどのようなモッサリ感はありません)
(PHP5.1~8.4まで動作確認済)
- 管理画面からブログ感覚で直感的にどなたでも簡単に投稿できます。クライアントが投稿することを想定しシンプル&分かり易さを追求。
※投稿数に制限はありません。(実際は環境にもよりますが21億程度ですが死ぬまで大丈夫です)
- 画像はlightboxで拡大表示します。
- カテゴリ機能があります。ただ、カテゴリを利用するかどうかは設定ファイルで簡単に切り替えられます。デフォルトでは「利用する」となっています。不要なら「利用しない」に設定ください。カテゴリごとに画像を登録することも可能です。(デフォルトではOFF)カテゴリ一覧ページもありますので、必要に応じて利用してください。(入口が欲しい場合など)
- 画像(jpg、gif、png)は自動縮小します(サイズ、画質とも設定ファイルにて設定可)。デフォルトは横写真の場合は幅、縦写真の場合は高さでいずれも800pxで画質は90。いずれも設定ファイルで変更可。
※サーバーのphp.iniの設定によりアップロード容量の制限値が異なります。デフォルトは5MBとしています。
変更方法や詳細はこちらを参考下さい
※iPhoneで縦で撮った写真が横写真として認識されてしまう問題も対策しています。
- Newマークの表示が可能です。登録日からの表示期間は設定ファイルで指定可能です。デフォルトは10日。デフォルトではCSSのみでアイコン状にしていますが、CSSを編集したり画像を設定したりなどオリジナルデザインももちろん可能です。
- バックアップファイルを自動生成(デフォルトはOFF)新規投稿時にバックアップを作成します。万が一のデータ保存ファイル上書きなどによるデータ消失を防ぎます。(データ保存ファイルを別名で複製保存します
サンプルデモ
管理画面サンプルデモ
ユーザID:admin
パスワード:j4h1gT4ah8t7
テスト投稿してみてください。下記のページに反映されます。削除も可能です。
表示側
既存のページに表示することを想定しているのでhtml、CSSとも必要最低限としています。自由に調整ください。
ギャラリー一覧ページ
カテゴリ一覧ページ(不要であれば使わずでOKです)
jQueryのloadによる表示(不要であれば使わずでOKです)
プログラムダウンロード
事前にご利用規約をご確認、ご同意下さい。
クリックで自分のPCにダウンロード保存して下さい。または右クリック⇒「対象をファイルに保存」
PKOBO_Gallery.zip(約95KB)
文字コードはUTF-8です。
設置方法
ファイルの文字コードはUTF-8です。必ず対応したエディタで開いてください。
メモ帳(UTF-8非対応)は使用禁止です。TeraPad(無料)やDreamWeaver等で開いてください。
(そこまで意識する機会はありませんが、必ずBOM無しで保存して下さい。※多くのエディタのデフォルトはBOM無しのはずです。BOMについて詳しく知りたい方はこちら)
※ PHPでは、スラッシュ2回「//」の後からその行の末尾までがコメント扱いとなります。「#」、「/**/」もです。
1.ダウンロードファイルを解凍する
zipファイルになっていますので解凍下さい。解凍ソフトは何でも構いません。Windowsであれば標準で付いている「展開」などでもOKです。
2.ファイル構成と各ファイルの説明
■色のものはパーミッション変更が必要な場合があります。
一般的なレンタルサーバーであれば、パーミッションの変更はほぼ必要ありません。稀にサーバーによっては変更が必要な場合があります。パーミッションが正しいかどうかは簡単にチェックできます。管理画面から正常に登録ができていればOKということです。
| gallery.php |
登録したギャラリーを一覧で表示します。ページングも付いています。
カテゴリ機能を利用している場合はカテゴリ選択用のプルダウンも表示されます。 |
| gallery_category.php |
カテゴリの一覧ページです。必ずしもこのページを使う必要はありません。不要なら削除してOKです。あくまでも必要に応じてご利用ください。 |
load_gallery.php
load_sample.html |
jQueryのloadを利用してページ内に表示したい場合のファイルです。
必ずしもこのページを使う必要はありません。あくまでも必要に応じてご利用ください。不要なら削除してOKです。loadで表示することで設置も簡単で、またページ遷移が発生しないので、ページの途中部分に表示したい場合などに便利です。load_sample.htmlに表示するためのJSのソースコードがありますのでコピペください。 |
| ┗ pkobo_gallery/ |
システム全体のディレクトリです。リネームは可能ですが、変更した場合、各表示側ファイルのパス部分も変更が必要です。検索、置換などで対応下さい。 |
| ┗ admin/ |
管理画面です。登録や変更、削除を行います。クライアントにはこのURLだけを教えることになるかと思います。 |
| ┗ admin/include/config.php |
設定ファイル。管理画面ログイン情報の設定やその他設定が可能です。
エディタで開きコメントを参考に必要に応じて設定下さい。
特にログイン情報は必ず変更下さい。
セキュリティ上の観点から念のためパーミッションを「444」に設定下さい。
(ただし、444だとFTPソフトでも上書きできなくなることがあるので、その場合は一時的に666等に変更する必要があります) |
| ┗ admin/内その他ファイル |
すべて必要なファイルになりますが意識する機会はないと思います。特に触らずそのままアップ下さい。特に「copy.inc」は触らないで下さい。システムエラーが発生します。 |
| ┗ data/ |
データ保存用ディレクトリ |
| ┗ data.dat |
データを保存するファイル(必要に応じてパーミッション666等書き込み可能なものに) |
| ┗ backup/ |
データファイルのバックアップを保存するディレクトリです。
(必要に応じてパーミッションを777等書き込み可能なものに)
バックアップはオプションです。デフォルトはOFF。
バックアップをONにすると新規投稿時にだけbackupディレクトリ内に「backup年月日時分秒_○○.dat」のファイル名で最新のdata.datが複製されて保存されます。古いものは自動で削除されます。保存期間は指定可能です(デフォルトは3ヶ月 ※本日から3ヶ月前までのデータを保存します)。このあたりは設定ファイル内にも詳しく記述しています。 |
┗ upload/gallery/
┗ upload/category/
|
アップロードファイル保存用ディレクトリです。
(必要に応じてパーミッションを777等書き込み可能なものに) |
3, ユーザID、パスワードを設定する
admin/include/config.phpをエディタソフトで開き、ログインのためのID、パスワードを変更してください。
初期値は
ID:admin
パスワード:j4h1gT4ah8t7
になっています。必ず変更してください。(半角の英数字、記号が設定可能です)
※パスワードはできるだけ13文字以上かつ大文字、小文字のローマ字、数字、記号(+_?*等)などを含めて下さい。
その他必要に応じてコメントを参考に設定してください。
特にデフォルトではカテゴリが「利用する」になっています。カテゴリ機能が不要な場合は変更下さい。
4, FTPでアップ
pkobo_galleryフォルダ、及び一覧ページをすべてアップしてください。
上記の■色のファイル、ディレクトリのパーミッションを変更下さい。
(ただし、config.phpは444だとFTPソフトでも上書きできなくなることがあるので、その場合は一時的に666等に変更する必要があります。ってことで戸惑われる方もいると思うので本当はややこしいので「444」にして下さいとかあまり言いたくは無いのですが、WPの改ざん問題とかもありましたので、念のため変更しておいたほうがいいでしょうっていう程度のことです)
パーミッションはサーバーによっては変更自体が不要な場合があります。また値もサーバーにより異なることがあります。
パーミッションが異常の場合には、管理画面で警告メッセージが表示されますので、すぐに気づくことができます。
逆に正常に管理画面が表示されて、登録もできていれば、正常なパーミッションになっていると考えてOKです。ちなみにロリポップ、さくらインターネット、エックスサーバーの場合、パーミッション変更は不要です。
5,ブラウザで確認
「あなたのサイトのURL(設置した階層)」/pkobo_gallery/admin/を表示し、管理画面にログイン後、投稿を行ってみてください。正常に登録、編集、削除ができればOKです。
表示側のページも確認下さい。
投稿データが反映されていればOKです。
6, ページの調整
必要に応じてスタイルシート、HTML等で見た目の調整を行ってください。じゆ~です!
こちらでも十分に検証を行なっておりますが、配布直後は未知のバグが無いとも限りません。お気づきの点がございましたらご連絡いただけますと幸いです。
著作権表示リンク削除について(2,000円+消費税/1サイト)
デフォルトでは全ページの下部に著作権表示リンク(クレジット)表示があります。
無断での削除は禁止となります。
クライアントへの納品やリンクが煩わしい、または寄付の意味でなどクレジットを削除されたい場合には、
1サイトあたり2,000円+消費税のライセンス料金が必要になります。申請いただければ開発の励みにもなります。
お支払いいただけた場合、すべてのページでクレジットが削除されます。
サイトごとのライセンスとなります。2サイト目以降は都度料金が必要になります。
尚、プログラム自体に変更を要するものではございませんので、すでに導入済みであればそのままお使いいただけます。まだ導入されていない場合でも、導入作業を行なっていただいて問題ございません。
※システムには無関係の1ファイルを差替えしていただくだけになります。
※差替えするファイルはご入金確認後にメールにてお送りいたします。
著作権リンク削除申込はこちらです(銀行振込)
クレジットカードでのお支払いはこちら
(完全自動化によりクレジットカード払いの場合、決済完了後即ダウンロード可能です。手数料無し)
動作確認済PHPバージョン
PHP4.3.9~PHP8.4まで対応(2025/11/05現在)
動作確認済レンタルサーバー
- エックスサーバー [PR]

※個人的にはここが好きで、もうずっとここです。このサーバーで困ることはまずないでしょう。
- ロリポップ! [PR]

※ただしここはWAF機能がONの場合、CMSプログラムで問題が発生する可能性が高いです。詳細はこちら
またサーバーがブラックリストに登録されてしまいメール系のプログラムで受信できない大問題も多々確認されています。詳細はこちら ただコスパ的には有りだと思います。
- カゴヤのレンタルサーバー [PR]

ここは高機能、高スペック、良心的な価格でありながら風俗系のサイトがOKという非常に貴重なサーバーです。個人的には風俗系のサイトであればこのサーバー以外の選択肢はないと思ってます。
- さくらのレンタルサーバ [PR]

その他一般的なレンタルサーバーであれば問題なく動作するはずですが、
すべての環境(サーバー)での動作を保証するものではありませんのでご了承下さい。
問題が出る可能性が高い、またはそのままでは必ず問題が出ることが分かっているサーバー
※現状私自身が把握している範囲です。(実際に確認していますのでちゃんと根拠もあります)
1,Yahoo系(ジオプラス、ウェブホスティングとも)※Softbankも含む
2,KDDI系(CPI含む)
3,NTT系(WebArena(suiteX)、NTTビズリンク(BizLink))
※プロバイダー系は特に問題が多いです。(個人的には絶対に借りてはいけないと考えています)
4,スマイルサーバー
5,ファーストサーバ
特にCPI、NTT系、スマイルサーバー、ファーストサーバで問題がある場合はこちらも参照下さい
経験上、結局は「餅は餅屋です」。プロバイダー系はプラン、金額に関係なく特に問題が多いです。サーバーの問題で時間を取られるのは非常に無駄ですし、その先ずっと影響しますのでサーバー選びは慎重にされることをオススメします。
特に理由がなければあえてこれらのサーバーは借りないほうが得策でしょう。高いから良い、安いからダメという安易なものでもありませんので難しいところですね。(まぁ安いには安いなりの理由があるのですが・・)
よくある質問とよくあるカスタマイズ例
不具合関連
管理画面で投稿やページ遷移するとログイン画面が表示される
ログインにはPHPの「セッション(session)」機能を使用しています。
設置サーバーでPHPの「セッション(session)」機能が有効で無い場合、本プログラムは使用不可になります。
ただ、一般的なレンタルサーバーであればまず問題とはなりません。
よくあるミスとしてはファイルをBOM有りで保存してしまったというのがあります。
BOM有りで保存してしまうとセッションが維持できずページを移動するとログイン画面が表示されます。
Windows標準のメモ帳で開いて保存するとBOM有りとなりますのでメモ帳はPHPファイルでは絶対に使用してはいけません。
TeraPadなどのエディタソフトを使用して下さい。またTeraPadの場合は「UTF-8N」で保存して下さい。
BOMについては以下ページをご参照下さい。
https://www.php-factory.net/trivia/03.php
管理画面で投稿やページ遷移するとログイン画面が表示される場合がある(不定期に)
ログインにはPHPのセッションというものを使用しています。このセッションは定期的に削除されるようになってます。
セッションの性質としてデフォルトではログイン後、ページ遷移せずに24分が経過した場合、100分の1の確率でセッションファイルが削除されます。
※セッションファイルが増えすぎないようにするための仕様です。
要するにログイン後そのまま放置して24分以上経ってから他のページに移動しようとするとログイン画面が表示されてしまう場合があるということになります。
ただ、実際に24分以上も放置することは少ないと思いますし、
また確率的に削除されることは非常に稀です。
ですので、頻繁に発生する場合は少なくともこの仕様が影響しているとは考えづらいです。
その他考えられる原因としては
セッションファイルの保存先のディレクトリが
他のシステムでも使われていて、
それの影響で削除されてしまっているのかもしれません。
それを回避する方法を以下に記載しますので、お試しいただければと思います。
1,セッションの有効期限を延長して、セッションファイルの保存用ディレクトリを指定する
設定ファイル(config.php)の一番下の方にでも以下2行をコピペして追加して下さい。
ini_set( 'session.gc_maxlifetime', 14400 ); // 秒(デフォルト:1440)
session_save_path( dirname(__FILE__) .'/../session' );
これでセッションの有効期限が240分となります。
また、セッションファイルの保存先がadmin/session/になります。
2,セッションファイル保存用ディレクトリを用意する
admin/内にsessionという空のディレクトリ(フォルダ)を1つ作って下さい。
次にadmin/include/内にある.htaccessファイルをコピーして
作成したsession/ディレクトリ内に入れて下さい。
※セッションファイルにアクセス出来ないようにするためです。(必ず実施して下さい)
以上。
これで一度管理画面からログアウトしてログインしてみて下さい。
ログイン出来て、またadmin/session/内にセッション用のファイル(ランダム文字のファイル名です)が生成されていればOKです。
これでしばらく様子を見てみて下さい。
画像をアップしても反映されない
まず、サーバー上のuploadフォルダを開いて見て下さい。そこでFTPソフトの「更新」を押してみて、デフォルトでindx.htmlがありますが、それ以外に.jpgなどの画像ファイルがあるかどうか確認下さい。
ある場合には単純に表示側のimgタグのパスが間違っていることが考えられます。設置によって階層構造を変えている場合に発生しやすいです。できれば配布している階層そのままで設置してみて下さい。
そこに画像ファイルが無い場合は画像がアップされていないということです。考えられることはuploadフォルダのパーミッションが間違っている(基本的にはその場合管理画面で警告が出ます)、または、サーバーのphp.iniの設定でアップロードファイルの容量制限に引っかかっている、GDライブラリがインストールされていないなどが考えられます。プログラム側で5MBに設定しても、サーバー側の設定が2MBの場合はサーバー側の設定が優先されます。特にさくらサーバーのデフォルトは2MBだったと思います。
サーバーの容量制限については以下ページで解説してますのでご確認、必要に応じて設定変更してください。
サーバーのphp.iniによるアップロードファイルの最大容量の確認と容量制限の変更
PHPのGDライブラリですが、これはPHP4.3以降標準でインストールされていますので、ほとんどのサーバーでは問題無いはずです。
ただ、サーバーによっては、デフォルトで「Off」になっている可能性もあります。
以下ページを参考に現在のphp.iniの設定を表示させ、
サーバーのphp.iniの設定確認方法
「gd」でページ内を検索してみてください。「GD Support」などがあれば動いていることになります。
逆に「gd」自体見つからない場合には「有効」にする必要があります。
php.iniの設定で
;extension=php_gd2.dll
部分の先頭のセミコロンを削除してapacheを再起動すればOKです。
php.iniの設定、変更手順などはサーバーによって違います。詳しくはマニュアル、または無いような意地悪なサーバーなら直接サーバーに問い合わせてみて下さい。
「GD」を有効にしたいのですが・・・と質問すれば回答してくれるかと思います。
データファイル(data/data.dat)を間違ってローカルのファイルで上書きしてしまった
バックアップ機能をオンにしていれば(デフォルトはOFF)、data/backup/内に保存されているバックアップファイルで復旧が可能です。このファイルはdata/data.datを単純にコピーしたものです。
ファイル名はバックアップ時の「年月日時分秒」となっています。
「例 backup20131002024103_data.dat(この場合2013年10月2日2時41分3秒ということ」
これをリネームしdata/data.datを上書きすればOKです。その場合、念のためパーミッションを確認下さい。666等書き込み可能である必要があります。ただし、バックアップは新規投稿時のみ作成されます。もし新規投稿後にクライアント等が「編集」、「削除」などを行っていると、その変更内容は反映されていませんので先祖返り(デグる)する可能性があります。必要に応じてクライアントに説明、確認等を行うのが良いかもしれません。
バックアップを行っていなかった場合には申し訳ありませんがデータの復旧は不可能となります。
念のためサーバー会社に問い合わせてみてもいいかもしれません。バックアップを取っている可能性があるかもしれません。
サーバー障害によるデータ全損失の場合には復旧は不可となります。
この場合も念のためサーバー会社にお問い合わせください。
可能であれば念のため定期的にデータファイルをダウンロードされることをおすすめします。
ぷららホームページサーバーで「Fatal error」 が出る(ぷららは設置不可です)
結論から申しますとぷららホームページサーバーでは動作しません。以下のようなエラーが出るはずです。Fatal error: Call to undefined function mb_convert_encoding() in ○○○
これは「mb_convert_encoding」関数がないよーというエラーで、
及び
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings.
も出ます。これはタイムゾーンが設定されてませんよーのエラーになります。タイムゾーンは解決可能ですが、上記mb_convert_encoding関数はどうしようもありません。そのため、ぷららでは使用不可です。ぷららにも問い合わせましたが、正式に回答をいただいてますのでご参考まで
--------------------------------------------------------
恐れながら、弊社ユーザーCGIサーバーは「mb_convert_encoding」の関数に対応をしておりません。
また、現時点で今後対応の予定はございません。
ご要望に沿えず申し訳ございませんが、ご利用可能な範囲にてユーザー
CGIをご利用くださいますよう、お願い申し上げます。
--------------------------------------------------------
mb_convert_encoding関数は文字コードを変換する関数ですが、メールフォームにかぎらずPHPプログラムでは非常に良く使われるメジャーな関数です。
Yahoo、ぷららに限らずプロバイダ系全般に言えますが、制限や特別な設定が必要だったりとトラブルが非常に多いです。
本職では無いのでしょうがない部分もありますが、プロバイダ系は基本的には動作しないものとお考えください。
なのでホームページサーバーとしては極力使うべきではありません。(と断言できます(笑)もう、ちょっと怒ってますw)
たくさんの不具合報告をいただいています。
記事登録時に「403 Error - Forbidden ※指定されたページ(URL)へのアクセスは禁止されています。」とエラーが表示されてしまう。(ロリポップ系、CPIなど)
管理画面で登録ボタンを押すとエラー表示される場合があります。これは主にロリポップ系、CPIなどに導入されている「WAF機能」による可能性が高いです。以下ページを参考にこの機能をOFFにしてみてください。
ロリポップの新機能「WAF機能」をOFFにする
投稿したものが文字化けする(主にファーストサーバ、CPI、WebArena(suiteX)など)
以下ページに掲載されているサーバーの場合にはそのままでは問題があります。内容は若干異なりますが、対応方法はおなじになりますので、ご参考の上でご対応下さい。
https://www.php-factory.net/cms/detail.php?id=6
画像アップ時のメモリ不足によるアップ失敗
(Fatal error: Allowed memory size of ●● bytes exhausted)
このプログラムは画像アップ時に設定ファイルで設定したサイズに自動で縮小されますが、この処理は比較的大きなメモリを消費します。
要するにサーバーのPCスペックに依存する部分になります。
(経験上、安い(PCスペックが低い)サーバーの場合に発生する可能性が高い問題であり、エックスサーバーなど中程度以上のサーバーであれば基本的には発生しません)
解決策としては、以下3パターンがあります
1,メモリの上限を上げる
これができるかどうかは微妙ですが、
PHPの設定で一応上げることができます。
※ただし、経験上この設定は無視される可能性があります。
(サーバー側が許可していない、またはそもそもPCのスペックが低いなど)
以下ページに変更方法を記載しておりますのでご参考下さい。
http://www.php-factory.net/trivia/05.php
2,縮小サイズを大きく設定する
デフォルトでは600pxに設定していますが、
これをたとえば1000pxなどでお試しいただく。
縮小率が高いほどメモリを消費します。
例 2000px → 1000pxへの縮小よりも2000px → 600pxの縮小のほうがメモリを多く食う。
逆にこれで解決した場合には、
メモリが原因だったということになります。
ちなみにですが、このプログラムは設定ファイルで設定したサイズよりも大きい場合にのみ縮小処理が実施されますので、
たとえば設定サイズを適当に10000とか現実的にありえない値に設定しておけば縮小処理を無効化することが出来ます。場合によってはこれで回避するということも考えられます。が、表示側ページが重くて大変かもしれません。。。
3,事前に縮小する
この場合、根本的な解決とはなりませんが、
サーバー移転が難しい場合には、
また上記の設定でうまくいかない場合には、
残念ながらこれしか選択肢は無いと思います。
ちなみに画像の縮小には「縮小専用」というフリーソフトがオススメではあります。ドラッグ&ドロップするだけで複数の画像ファイルを設定したサイズに一括(かつ一瞬)で縮小してくれます。
縮小するだけのことでわざわざPhotoshopなどを使うのは効率が悪いですからね。(クライアントが持っていない可能性も高いですし)
画像を含む投稿時に「Warning: exif_read_data(●●)」と表示される。
iPhoneで撮影した写真の場合、縦写真が横写真として保存されてしまう場合があり、
その対策として、画像を回転させる処理を実装していますが、
その処理部分でエラーが出てしまっています。
極稀にサーバーによっては実行に必要な関数が存在しないことがあり、
その場合にエラーとなってしまいますので、この処理を無効化することで対処可能です。
対象ファイル:admin/put.php
修正箇所:171行目付近の以下の箇所
//画像の回転(iPhoneの縦写真が横写真として保存されてしまう問題の対策)
if(function_exists('exif_read_data') && function_exists('imagerotate')){
$exif_datas = exif_read_data($_FILES['data']['tmp_name']['upfile'][$key]);
if(isset($exif_datas['Orientation'])){
if($exif_datas['Orientation'] == 6){
$image = imagerotate($image, 270, 0);
}elseif($exif_datas['Orientation'] == 3){
$image = imagerotate($image, 180, 0);
}
}
}
こちらをまるっと削除すればOKです。
またはすべての行の先頭にスラッシュ2つ「//」を入れるか、CSSと同じように/*と*/ですべてを囲んでコメントアウトしてもOKです。
以上です。
プログラムの不具合等でデータが消えてしまうことはない?
プログラムのバグなどによってデータが消えてしまうようなことはシステムの仕様上ありえないです。
これはプログラムの性質上、最も優先すべきものでもありますので必要十分な検証と致命的な不具合が絶対に起きないような設計を行なっています。
また配布してからこれまで相当な期間が経過しておりますが、
そういった報告は一度も届いておりません。
私自身も受託開発案件の仕様によってはこのプログラムをベースにすることが多いためヘビーユーザーでもあります。
それでも万が一そういった致命的な不具合が発生した場合でも対処できるようデータファイルの自動バックアップ機能も付けていますので万全を期しています。
※デフォルトはOFF。ONにすることを推奨します。設定ファイル(config.php)で簡単に設定できます。
ただ、それでも唯一発生することが考えられる状況があります。それは複数人で同時に管理画面で更新作業を行うようなケースです。
データの保存方法はテキストファイルでの保存形式を採用していますが、
ファイル書き込み処理がまったく同時に行われてしまうとデータ損失する可能性が理屈上は一応あります。(マイクロ秒単位で同時など)
これはファイルオープンとファイルロックの処理の間にはどうしても極々わずかな隙(タイムラグ)が出来てしまうためですが、
そのタイムラグは一瞬(マイクロ秒単位)ですので、発生する可能性は限りなく低いです。(100万分の1秒単位で同時に更新した場合などに限られる)
それでもできる限り特定の人間のみが更新したほうがより安全と言えます。(更新する人数が増えるほどリスクは高まる)
ちなみにですが、複数人で更新するリスクはこの他にもあります。(むしろこちらは普通に発生すると思います)
たとえば特定の記事を二人で同時に更新している場合をイメージすればわかりやすいと思います。
一人目が編集画面を開いて文字を修正しています。その間に二人目が同じく編集ページに入って文字を修正します。
この時点でピンと来るかと思いますが、この段階で一人目が保存ボタンで保存して、二人目が同じく保存ボタンを押して保存したとします。
この時点で一人目の作業は無かったことになってしまいます。
一人目は当然文字を修正したものと思っていますが、実際には変更されていません。
これはいわゆるデグリ(先祖返り)です。
こういったリスクもあるので、
管理画面での更新作業はできる限り一人が行うべきでもあります。
投稿時や編集時に「ページ遷移エラー(トークン)」が表示される
「ページ遷移エラー(トークン)」はCSRF対策のために実装しているセキュリティ上必要なワンタイムトークンが働いた場合に表示されるものですが、
以下のような条件でも表示されることがあります。
※ただ通常の操作では基本的には表示されることはありません。
表示される例としてはたとえば、
新規登録時であれば、
投稿内容の入力
→保存
→ブラウザの戻るボタン
→保存
のようなページ遷移で発生します。
投稿記事の再編集でも同じことが起きます。
または投稿画面を開いた状態で他のタブであらたに同じ投稿画面を開いた場合で、
初めに開いていたページで登録すると同じくページ遷移エラー(トークン)となります。
これは同じブラウザで同じページを2つ以上開いてしまうとトークン用のセッションが上書きされて書き換わってしまうためであり、正常な動作です。
またその他考えられることとしては、
セッションがタイムアウトした場合です。
たとえば投稿画面を開きっぱなしにして相当な時間が経過していると
セッションがタイムアウトして切れてしまい、結果エラーとなる可能性もあります。
※PHPのセッションはデフォルトでは約24分でかつ100分の1の確率でセッションが切れます。(分母はsession_start()が呼ばれた数)
※これは確率的には相当低いため、発生することはまずないでしょう。
こういった理由から通常の操作で表示されることはまずありませんので、
たまたまそういった操作を行ったということだと思います。
2021/04/15追記
ブラウザがChromeの場合でかつ特定のプラグインを導入している場合に、この症状が出るという報告がありました。
プログラム側では対処不可能ですので、ブラウザを変えるかプラグインをOFFにしていただくしかありません。
アドバイス、仕様についてなど
SSLで表示したい
もちろん対応しています。WPなどのようにややこしいことは一切ありませんので安心して下さい。
特に意識する必要すらありません。表示側、管理画面側ともSSLでそのまま問題なく表示できます。https経由でアクセスするだけです。
※非SSLのhttp通信による外部ファイルの参照などは一切行なっておりません。
また投稿記事内にアップした画像やPDFなどのファイルのパスはすべて相対パスとなっていますので、
非SSL環境からSSL環境に変わったとしてもまったく問題ありませんし、もしドメインが変わったとしても問題ありません。
(いずれも意識する必要すらありません)
※このあたりがWPとは大きく異なる部分でもあります。
尚、SSL自体の導入などはご自身にて対応下さい。(SSL自体はPHPとは直接関連がありません)
サーバーを引っ越し(移転)したい
至って簡単です。WPのようにややこしいことは一切ありませんので安心して下さい。
すべてのファイルをダウンロードしてそのまま新サーバーにアップするだけです。
サーバーによっては稀にファイル保存ディレクトリやデータファイルのパーミッション変更が必要な場合もありますが、その場合には管理画面内に赤字で警告が出るようになっていますので、
管理画面にログインすることですぐに分かります。
何も警告が出ず、投稿なども問題なくできていれば引っ越しは完了です。
※警告が出た場合はそのメッセージのとおりにパーミッションを変更すればOKです。
また投稿記事内にアップした画像やPDFなどのファイルのパスはすべて相対パスとなっていますので、
非SSL環境からSSL環境に変わったとしてもまったく問題ありませんし、もしドメインが変わったとしても問題ありません。
(いずれも意識する必要すらありません)
ただし、PHP環境も変わりますので必ず事前に設置&動作確認を実施して下さい。
管理画面の登録年月日の西暦のプルダウンが翌年までしか表示されていない
登録年月日の西暦のプルダウンは2015年から翌年までの西暦が自動で反映されるようになっているため翌年以降も問題ありません。
(意識する必要はありません)
尚、スタートの西暦を2015年よりも後としたい場合は
include/admin_function.php
の以下の箇所を変更すればOKです。(ファイル内に1箇所しかありませんので検索すれば見つかります)
$start = 2015;
※その他のカスタマイズが必要な場合にはご相談下さい。別途お見積もりさせていただきます。
ご利用について
HTMLやCSSなどをある程度理解されている方を対象としています。
設置、カスタマイズ方法などのサポートは行っておりませんのでご了承ください。
設置法、HTMLタグ、CSS等に関するサポートは申し訳ありませんが有料にて承ります。
カスタマイズについてもすべてお見積りの上で有償対応となります。
もちろん不具合などがありましたら遠慮なく何でもご相談ください。
不具合などのお問い合せはこちら
有料サポートはこちら
ご利用規約
・無料版プログラムはフリーウェアです。ただし、著作権は放棄するものではありません。
・プログラムの著作権表示リンク(ページ下部にある当サイトへのリンク)を無断で削除することはできません。
(一律2,000円+消費税の削除依頼をいただいた場合を除く)
・プログラムの再配布、再販売は禁止です。
※ただしクライアントへの納品などでシステム費用、設置費用として請求されるのは問題ありません。
・プログラムによって何らかの不利益、損害が生じても一切の責任を負いません。
あらかじめご了承の上ご使用ください。
もし何らかのトラブルがあった場合には、ご相談いただければ解決策が見つかるかもしれません。
(クライアントへの原因の説明など)
・プログラムは全ての環境(サーバー)での動作を保証するものではありません。
・改変等は自由ですが、自己責任でお願いします。
・有料版をご購入いただいた場合、初期不良を除き、ご使用後の返金には応じ兼ねます。
・有料版(著作権リンク削除含む)は1サイト(同一ドメイン)内であれば複製の上で複数利用可能です。
2サイト目以降は都度サイトより購入申込みが必要になります。
※サブドメインはその性質上、別サイト(別ドメイン)とみなします。
ダウンロードいただいた時点で利用規約に同意したものとみなされます。
カスタマイズ、設置代行について
どのようなカスタマイズでもまずはお気軽にご相談下さい。お見積りをお出しします。
設置のご依頼・カスタマイズお見積もりの詳細はこちらです
実施しているセキュリティ対策について
当プログラムで行なっている対策をご紹介します。
一般的に考えうるリスクには対策を施しています。無料版だからこのぐらいでいいだろうというような妥協は一切していません。
注意事項(大前提としまして)
このシステムは管理者が更新を行うCMSシステムです。特定の人間(社内や管理者のみなど)のみが更新することを前提としています。不特定多数の人間が投稿できるような一般公開型の掲示板のような使用は絶対に行わないで下さい。
具体的な対策(この下に展開されます)
クロスサイト・スクリプティング対策(XSS)
表示側ではすべての表示要素に対してhtmlspecialcharsにて適切にエスケープ(サニタイズ)していますので、ページ上でHTMLタグ類が有効になることはありません。
唯一このシステムの都合上、本文入力欄のみHTMLを有効にする必要がありますので、この部分については、サニタイズを実施していません。
ただ、これはCMSの仕様上、管理者しか更新しないことを想定していますので、それが即問題となることではありませんし(管理者があえて閲覧者に危害を加えるようなものを記述することは無いと思いますので)、また下記「CSRF対策」も行なっていますので、問題ないと考えています。
クロスサイトリクエストフォージェリ対策(CSRFまたはXSRF)
投稿時、変更時、削除時ともワンタイムトークンにより、外部サイト経由でのCSRFを防止しています。
もちろん管理画面はそもそもログイン認証が必要なため、基本的にはそのようなことは発生しませんが、ログイン中のユーザーを悪意のある第三者が作成したページに誘導されてしまい任意のスクリプトを実行させることでデータ改ざんされてしまうというCSRFに対する対策になります。
またアップファイルは設定ファイルで指定したもののみ可能(ホワイトリスト式)となっていますので、PHPファイルやhtaccessなどがアップされてしまうこともありません。(逆に必要なファイル以外は許可しないで下さい)
またアップファイルは拡張子も含め強制的にリネームされますので、ファイル名による攻撃は完全に防ぎます。
ディレクトリトラバーサル対策
大前提としてアップファイルの元ファイル名は一切利用せず、すべて完全に一意のファイル名にリネームされ、ディレクトリを表すような文字列「/」や「..」などが有効になることはありません。また保存先も固定値としておりますので、意図しないディレクトリへのアップロードは出来ない設計になっています。(保存時は元ファイル名$_FILE[]['name']は使用していません「tmp_name」を使用しています)
またアップされるファイルの拡張子についても制限を設けています。(ホワイトリスト式で設定ファイルで設定可)また拡張子はシステム側で付与していますので、ファイル名で拡張子「.」が2つ以上になることもありません。(○○.php.jpgとされた場合にPHPコードが実行される脆弱性への対策など)
まぁそもそもCSRF(対策済)や管理画面がハックされない限り管理者が意図しないファイルをアップされるリスクはほぼありませんが、念には念の対策を行なっています。まぁ仮にハックされたとしても危ないファイルはアップできないためそもそもこの脆弱性自体は存在しないことになります。(管理画面がハックされた場合、当然記事を改ざんされるなどはあるかもしれませんが)
ログイン認証クラックの対策
ログインにはユーザーID、パスワードの入力が必要ですが、総当りされてしまうと現実的にはいつかは突破されるリスクがあります。そのためパスワードは出来る限り推測困難かつ長い文字列で設定することが最も重要な対策となりますが、ID、パスワードの入力ミスが特定回数連続で起こった場合には強制終了し、詳しい仕様はお伝えできませんが、総当りを連続で行えないような実装を行っています。
もしクライアントなど正規のユーザーが忘れてしまったなどでそういった事態に陥った場合には、設定ファイルでの正確なログイン情報を伝えて下さい。
またデータベースは使用していませんのでログイン情報はPHPファイル内にしか存在しないため漏洩のリスクは限りなく低いです。
(上記でも述べましたが、よりセキュリティを上げるため設定ファイルconfig.phpのパーミッションを444に設定下さい)
インジェクション対策
データベースは使用していないため基本的には問題ありませんが、セキュリティ上具体的には言えませんがパラメータは厳密にチェックしています。イレギュラーがあれば即強制終了します。まぁ個人情報を含むようなシステムではありませんのであえてこれを行うほど暇な人がいるとは思えませんが、念には念の対策を行なっています。
セキュリティには十分に配慮していますが、問題点などがございましたら遠慮なくご指摘いただけたらと思います。
旧ニュースプログラムからの移行について
申し訳ございませんが、旧プログラムとは互換性がなく、またデータ構造が変わるためそのまま移行することはできません。お手数ですが今一度管理画面よりご登録下さい。
更新履歴
2025.11.05 v1.0.0 これまで配布してきましたギャラリープログラムをフルリニューアルしました。以前のプログラムとの互換性はございませんのでご了承ください。
より設置しやすく、表示側もより簡単にカスタマイズしやすいよう、ソースコードもゼロから設計、開発しました。また今までに様々なカスタマイズ依頼、ご要望などをいただきましたが、それらほとんどの機能を実装しましたのでほとんどの要件に対応できると考えています。