PHP 2024年09月19日 16:06   編集
new!
用語集を作成するためのPHPプログラムです。
  • インデックスを新着順、索引、カテゴリー別に切り替えられます。
  • 記事内に他の記事のタイトルがあれば自動的にリンクを張り、記事の内容を一部ポップアップ表示します。
  • 記事にカテゴリーを設定することができます。カテゴリーによる絞り込み、分類表示が可能です。一つの記事に複数のカテゴリーを指定することができます。
  • 同じタイトルで内容が違う記事を複数作成することができます。
  • 管理者設定で「管理者のみ投稿可」、「誰でも投稿可」を指定できます。
  • pluginディレクトリにphpファイルを入れると、プラグインとして機能させることができます。
この"Shade検索"Wikiにも使用しています。
Wikiと違って、htmlタグを記述したい場合は直接タグを入力します。許可されたタグはそのまま有効になります。
Wikiのhtml変換書式がなかなか覚えられないのと、管理者のみがページ編集するのがメインの使用と考えて直接記述方式にしました。誰でも投稿可能モードにすると、最低限のタグのみ有効です。

更新履歴

ver.1.191
2024.09.19
プラグインファイルを整理。
ver.1.190
2024.09.02
./lib/holiday.phpを更新。
ver.1.189
2024.08.20
管理画面で管理者用パスワード変更ができないバグを修正。
function file_upload() とfunction thumb() を./lib/file_upload.phpに移動。
ver.1.188
2024.07.30
管理画面にブルートフォースログのリンクを追加。
ver.1.187
2024.07.21
bbsプラグインの添付ファイル処理を修正。
ver.1.186
2024.07.19
comment3プラグインのデータ保存先を修正。
ver.1.185
2024.06.21
アクセスカウンター処理修正。bbs.php access.php修正
ver.1.184
2023.04.15
PHP8.2.4対応 term.php search_image.php bbs.php calendar.php修正
ver.1.183
2022.12.30
カテゴリーを指定した際、該当記事数が1ページの表示件数を超えても繰り越しリンクが表示されていなかったのを修正。
ver.1.182
2022.10.15
スキンファイル編集機能追加

設置

ダウンロードした圧縮ファイルを解凍すると以下のようなディレクトリとファイルに展開されます。
dir.gifimgfile.gifblink.gif
file.gifclip.gif

dir.giflibfile.gifholiday.php
dir.gifpluginfile.gifaccess.php
file.gifcalendar.php
file.gifcomment.php

dir.giftmplfile.gifbasic.html
file.gifblue.html
file.gifname.html

file.gifinit.php
file.gifstyle.css
file.gifterm.php
  1. これをすべてサーバーにアップしてください。
    パーミションはサーバー指定のものにしてください。
  2. term.phpにアクセスしてください。
  3. 初めてのアクセスの場合、管理用パスワードの入力を求められるので、ここでパスワードを設定してください。
  4. 設定を変更する場合は、ページ右下の管理者用リンクから管理者画面にログインします。
    設定の
    • $t_titleはサイトのタイトル、
    • $skinは見た目を変えるスキンファイルの選択
    • $index_typeはデフォルトのメニュー
    • $post_modeは書き込みを管理者のみに限定するか誰でも書き込み可にするかを指定します。
    設定を変更したら「修正」ボタンを押して変更を確定します。

記事の投稿

画面右上部にある新規作成リンクを押すと記事投稿フォームが表示されます。
作成済みの記事を修正、削除するには記事右上の編集リンクをクリックしてください。
記事の記述方法については、ヘルププラグインヘルプを参照してください。

ヘルプ、プラグインヘルプは以下の手順で作成してください。
ヘルプは「ヘルプ」というタイトルの記事のコメント欄に
[[help]]
を記述して保存してください。
プラグインヘルプは「プラグインヘルプ」というタイトルのコメント欄に
[[plugins]]
を記述してください。

アップデート

term.phpがアップデートした場合、解凍したtermディレクトリごとすべて上書きしてください。
term.phpにアクセスすると、個人設定ファイルを元に管理者パスワードや既存の設定をinit.phpに復元するので、再度初期設定をする手間が省けます。
style.cssやtmplフォルダ内のhtmlファイルはそのまま上書きされます。cssファイルやhtmlファイルをカスタマイズしている場合はご注意ください。

カウンターの連続アクセスチェック

連続アクセスをカウントしない設定にしていても、ロボットのアクセスによって異常にカウントアップされてしまうことがあるようなので、カウントアップの方法を若干変更しました(ver.1.178)。
もともと最終アクセス元のIPアドレスと時間を保存し、最終アクセス元と違うIPアドレスからのアクセスはカウントアップするようにしていましたが、おそらく同じと思われるアクセス元からIPアドレスを変えて連続してアクセスするというケースがみられ、それによって異常にカウントアップされてしまうケースがあるようです。たとえば
2022/10/05 15:05:11<>66.249.79.131
2022/10/05 15:23:06<>66.249.79.133
2022/10/05 15:32:35<>66.249.79.131
2022/10/05 15:47:24<>66.249.79.133
2022/10/05 15:55:53<>66.249.79.131
2022/10/05 16:11:01<>66.249.79.133
のように短時間で似たようなIPアドレスから連続アクセスがある場合があり、これまでの方法では連続アクセスをカウントしない設定にしていてもすべてカウントアップされていました。

このため、アクセス履歴の保存件数を増やし、その履歴中に指定時間内(1日)のアクセスがある場合はカウントアップしないように変更しました。

この対応で一時落ち着いていたのですが、その後また1日に数万アクセスとか異常にカウントアップされるようになったので、確認してみると
2024/06/21 11:48:05<>69.171.230.13
2024/06/21 11:48:07<>69.171.230.8
2024/06/21 11:48:16<>69.171.230.23
2024/06/21 11:48:30<>69.171.230.16
2024/06/21 11:48:43<>69.171.230.2
2024/06/21 11:48:45<>69.171.230.12
2024/06/21 11:49:06<>69.171.230.23
2024/06/21 11:49:17<>69.171.230.24
2024/06/21 11:49:23<>69.171.230.113
2024/06/21 11:49:36<>69.171.230.3
2024/06/21 11:49:54<>69.171.230.2
2024/06/21 11:50:17<>69.171.230.5
2024/06/21 11:50:27<>69.171.230.22
2024/06/21 11:50:51<>69.171.230.115
2024/06/21 11:51:02<>69.171.230.13
2024/06/21 11:51:16<>69.171.230.21
2024/06/21 11:52:16<>69.171.230.14
2024/06/21 11:52:33<>69.171.230.114
2024/06/21 11:52:39<>69.171.230.8
2024/06/21 11:52:42<>69.171.230.1
のように同じIPアドレスを連続して使わず、第4オクテットを散らしてアクセスするケースが出てきたようです。アクセス履歴の保存件数を増やすと対応できるのかもしれませんが、あまり増やすのもばからしいので、第4オクテットは無視するオプションを追加しました(ver1.185)。管理画面で
$ignore_4th_octet = 1;
に設定します。

スキンファイル編集

試験的にブラウザ上からスキンファイルの編集ができるようにしました(ver.1.182)。
管理者画面から「スキンを編集」をクリックします。
管理者画面.jpg
以下のフォームで、スキンとして使用しているhtmlファイルとcssファイルが編集できます。
「プレビュー」ボタンでスキンを変更した際の見た目の変更をプレビューできます。キャッシュが効いているとすぐに反映されない場合がありますが、その場合はキャッシュクリアしてみてください。
編集画面.jpg

フォームメールプラグイン

ver1.191でフォームメールプラグインを追加しました。以下サンプルです
管理者用
counter:24,866