お絵かき掲示板簡単設置方法 2019年版

お絵かき掲示板交流サイトで使っているPOTI-board改の簡単設置方法です。

少し前にためしてみたけれど、うまく設置できなかったという方もぜひ…。

お絵かき掲示板簡単設置手順2019年版

POTI-board改をダウンロードします。

以前は、テンプレートが入っていない状態で配布していましたが、今はデフォルトスキンをはじめから入れています。
テンプレートが入っていないと掲示板が動作しないからです。

HTML5版しぃお絵かき掲示板PaintBBS NEOも最初から入っています。
ただし、最新バージョンではないかもしれません。
動作確認のために入れてあります。

お絵かき掲示板簡単設置手順2019年版

ダウンロードしたPOTI-board改のzipファイルを展開して…。

お絵かき掲示板簡単設置手順2019年版

FTPソフトで、php5.5〜php7.xが使えるレンタルサーバにアップロードします。

さくらのレンタルサーバの一番安いライトプランや、XREAの無料サーバでも動作します。

お絵かき掲示板簡単設置手順2019年版

ブラウザで設置したurlを開いて
potiboard.php
にアクセスすると、1、本文無しが表示されます。
投稿してみて問題がない事を確認します。

お絵かき掲示板簡単設置手順2019年版

FTP接続してパーミッションを確認すると、書き込みが必要なディレクトリは707、プログラムが書き換えるファイルは606、ログファイルは600になっています。(POT-Iboard改 v1.53.0でパーミッションの初期値が変わりました)
potiboard.phpが必要なディレクトリとファイルを作成してパーミッションを設定してくれます。

お絵かき掲示板簡単設置手順2019年版お絵かき掲示板簡単設置手順2019年版

2005年頃のマニュアルには、設置ディレクトリは777とありますが…。
777にするとサーバエラーになります。

パーミッションの設定を自分でしなければ、起きないトラブルです。

ここまで何も設定しなかったのは、動作する事を確かめるためです。
先にカスタマイズしてから転送したら動かなかったというケースも多いようです。

掲示板が動くことがわかったら
config.php
をutf-8対応のエディタで開き
//管理者パス
define('ADMIN_PASS', 'adminpass');
のadminpassとなっている箇所を、自分にしかわからないパスワードに書き換えます。

管理者パスがそのままだと誰でも記事を編集削除できる状態になるので危険です。
ここの書き換えは必須です。
//投稿サイズ(これ以上はサイズを縮小
define('MAX_W', '300'); //幅
define('MAX_H', '300'); //高さ
投稿した画像が大きく表示されない時は、ここの数値を変更します。
//強制サムネイル機能を使用する する:1 しない:0
define('FORCED_THUMB', '0');
それでも画像がサムネイルになる時は、1を0に変更します。
//タイトル(<title>とTOP)
define('TITLE', 'お絵かき掲示板');
掲示板のタイトルを変更します。
ここを変更してもトップページのタイトルが変わらない時は、管理モードからログ更新するか何でもいいので書いて投稿すれば反映されます。

POTI-boardはテンプレートを入れ替える事ができます。
PaintBBS NEOに対応したものに限ると…。

サ骨さんのテンプレートが4種類。
poti-kai-skins
黒鋼彗牙さんの
Cool Solid
Cool Solidから画像アップロード機能をなくし、BBSNoteに見た目を近づけた
PINK
があります。

お絵かき掲示板簡単設置手順2019年版
テンプレートを入れ替えたのに見た目が変わらない時は、ログ更新、または何でもいいので投稿してみてください。

PaintBBS NEOのバージョンアップに必要なファイルは、
neo/dist/
neo.css
neo.js
の2つです。
ダウンロードしたzipファイルを展開して取り出します。

お絵かき掲示板簡単設置手順2019年版
neo.cssとneo.jsの最新バージョンをpotiboard.phpと同じディレクトリに転送して上書きします。
最近のブラウザはキャッシュがなかなか消えないようです。
NEOのバージョンが上がらない時は、スーパーリロードしてみてください。

POTI-boardのエラーを減らすために 1のログファイルの書式編

POTI-boardの設置時にできる1のログファイルのコンマ数不足がが原因でNoticeが発生していたので…。
$testmes="1,".$now.",".DEF_NAME.",,".DEF_SUB.",".DEF_COM.",,,,,,,,,,\n";
コンマを8つ付け足しました。

お絵かき掲示板 POTI-board Notice削減

これだけでていたNoticeが…。

お絵かき掲示板 POTI-board Notice削減

でなくなりました。

記事を削除するとNoticeがでるので…。
for($i = 0; $i < $countline; $i++){
if($line[$i]){
list($no,,,,,,,$dhost,$pass,$ext,,,$tim,,) = explode(",",$line[$i]);

}
else{
$no=$dhost=$pass=$ext=$tim="";
}
$line[$i]が空文字の時には処理しないようにしました。

お絵かき掲示板 POTI-board Notice削減

記事を削除した時に発生していたNoticeが…。

お絵かき掲示板 POTI-board Notice削減

でなくなりました。

この変更はPOTI-board改 v1.50.5 lot.190101に反映されました。

お絵かき掲示板はこちら。

formの入れ子を回避する

<input>: 入力欄 (フォーム入力) 要素 | MDN

form 属性によって、入力欄を文書内のどこに置いても、文書内の他の場所にあるフォームと関連付けることができます。
formの入れ子になりそうなところは、早めにformのタグを閉じてformにidをつけて、inputにformのidを入れてやれば…。
<form id="foo" action="hoge" method="POST">
中略
</form>
<!--formのタグを閉じる-->
<!--別のformここから-->
<form action="fuga" method="POST">
中略
</form>
<!--別のformここまで-->
<!--最初のformのinput-->
<input form="foo" type="text">

id fooのformのinput。
ただしIE11では動作しないようです。

POTI-board改のテンプレート、POTI-board用テンプレート PINKの管理画面のセキュリティ対策のため、GETで管理者パスワードを取得していたテキストリンクをjavaScriptでPOSTに書き換えて、formの入れ子回避のためformにidを付けたのですが…。

やはりIE非対応…。
管理者が記事を削除するときに、Chrome・Firefox・Edgeを使えばすむ事なので、セキュリティリスクの回避を優先しました。

ブラウザのアドレスバーに管理者パスワードが表示されている状態で、著作表示のurlをクリックしたら…。
アクセスログに管理者パスワードが入ったurlが残るかもしれません。

noreferrerタグをいれてあるので、Chromeなら大丈夫かもしれないのですが…。IEはどうだったか…。
POTI-boardに限った問題ではなくて、relmにも同じ問題がありました。

テンプレートで対応できるのであれば、フタをしておいたほうがいいのでIE非対応でも…。

ゲストが投稿を編集・削除するときに使うメンテナンスフォームはIEでも問題なく動作するので、管理者が管理画面を操作する時にChrome・Firefox・Edgeを使えばすむことです。

formの入れ子を回避する

変更前のformタグの範囲。

formの入れ子を回避する

その中にjavaScriptを使ったform。

formの入れ子を回避する

formの入れ子になってしまうので、早めにformのタグを閉じて、idを付ける。

formの入れ子を回避する

inputにform属性を指定してformタグの範囲外から入力。
POTI-board用テンプレート PINK を配布します。: STP^3

セキュリティ対策済みのPOTI-board用テンプレート。

NEOを使うのチェックを外すとしぃペインター標準版が起動するテンプレートの配布も開始しましたので、よろしくお願いいたします。

Painter2019のインストーラーのバックアップ

Painter2019の体験版をダウンロードすると
CorelPainter2019.exe
というファイルが手元に残ります。
しかし、このファイルを実行するとプログラム本体のダウンロードがはじまる仕組みなので
CorelPainter2019.exe
をバックアップしてもあまり意味がありません。
CorelPainter2019.exe
を実行するとどうなるか…。画像はPainter2018のものですが2019でも同じです。

Painter2019のインストーラーPainter2019のインストーラー

すでにPainter2018の最新版がインストールされている状態で、2018の体験版をインストールしたので、何も変更されずにインストールウィザードが終了しました。

Painter2019のインストーラーPainter2019のインストーラー

C:\Users\ユーザーアカウント\AppData\Local\Temp\Painter\

にPainterのインストールに使うzipファイル
CorelPainter2018.zip
が残りました。このファイルがあれば、Painterをインストールできます。

Painter2019のインストーラー

Painter2019の修正パッチがを適用しましたが、修正パッチが手元に残りませんでした。
そこで、2019の体験版をダウンロードしてセットアップし、テンポラリーに残った
CorelPainter2019.zip
をバックアップしました。
おそらくこの体験版は、パッチをあてる必要がない修正されたバージョンだと思います。
CorelPainter2019.zip
のファイルサイズを比較して、ファイルサイズが違えばパッチ適用ずみのバージョンという判断です。

デジタルアート&ペイントソフト「Painter 2019」|ソースネクスト

Painter2019 Amazon
posted by さとぴあ at 2018/12/27 23:11 | Painter

POTI-boardの$delに不正な値が入らないようにする

他の変数にはスパム無効化関数を使う事ができたのですが、配列の$delをHTMLネームエンティティにエンコードすると動作しなくなるので…。
$del = ( isset($_POST["del"]) === true ) ? ($_POST["del"]): "";

if(is_array($del)){
$countdel=count($del);
for($i = 0; $i < $countdel; $i++){
if(!ctype_digit($del[$i])){//数字のみ
$del="";
}
}
}
else{
$del="";
}
$delが配列かどうか調べて配列なら配列の数だけ中身を確認し、数字以外の値が入っていたら空文字に置換、配列では無かった時も空文字に置換。入力フォームが改変されていない状態で、かつ数字が入力された時以外は$delが空文字になるようにしました。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

$delが配列なのは、複数の投稿を選択して一括削除するためです。
投稿を2つ削除する時に、$delに入る配列は2つ。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

数字以外をPOSTしてみます。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

削除ボタンを押しても削除されず、$delに空文字が入りました。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

入力欄の、name="del[]"から[]をとって、name="del"にして配列以外の文字列をPOSTしてみます。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

配列かどうかチェックしているので、$delが空文字になりました。

お絵かき掲示板 POTI-board $delに不正な値が入らないようにする

name="del[a]"に書き換えて連想配列をPOSTしてみます。
$_POST["del"]で値を取得した直後に、var_dump($del["a"]);、var_dump($del);で確認すると…。
$del["a"]には配列が入りますが、$delは配列ではなくなります。
if(is_array($del)){
//中略
}
else{
$del="";
}
より下にvar_dump($del["a"]);、var_dump($del);を移動して確認すると…。
$delは配列ではないので空文字になります。
$del["a"]も空文字になります。

あとは、問題なく操作できる事を編集、削除を繰り返して確認…。

この変更は、POTI-board改 v1.50.3に反映されました。

お絵かき掲示板交流サイトはこちら。

P.S.
$_POST $_GET から filter_input()へ: STP^3

filter_input()とFILTER_VALIDATE_INTのほうが簡単でした…。

POTI-boardのセキュリティを高めるために

poti-boardというPHPスクリプトをサイトに設置したいのですが、設置手順通... - Yahoo!知恵袋

このスクリプトはPHP5であるにも関わらず
extract($_POST);
extract($_GET);
extract($_COOKIE);
と、register_globals同等のことを自らやっているので、相変わらず脆弱性はあります。
PHP: extract - Manual

警告
ユーザーの入力、例えば $_GET や $_FILES のような、 信頼できないデータに extract() を使用しないでください。
今後も使い続けるために書き直す事にしました。
といっても、何がGETで何がPOSTなのかわからないところから検索して調べて…ですから、この人POSTとGETの違いがわからないのに掲示板をいじっていたの?と思われても仕方がない状態…からの書き直しとなりました。

extract($_POST); の問題点
extract($_POST);を使っていたら…。Chromeのデベロッパーツールでフォームの入力欄を変更するだけで任意の変数を設定できてしまいます。
ここでは、useneoの筈のところを改変してusenoeにしています。

extract($_POST); の問題点
var_dump($_POST);で確認してみると…。usenoe が on。
extract($_POST);なら、$usenoe=true;に。
そうならないように、あらかじめ設定した変数しか入らないように書き直しました。

extract($_GET); の問題点
extract($_GET);はもっと大変で、ブラウザのアドレスバーへの入力で任意の変数を設定できてしまいます。
また、?res=105 のような数字が入る事を期待している箇所にhtmlを入力すると入ってしまいます。

extract($_GET); の問題点
HTMLやjavaScriptが入力されたら、HTMLネームエンティティにエンコードして無害化するように書き直しました。
一部対応しきれなかったので穴がありますが、URLパラメータを入力するだけでは変数を設定できなくなりましたからかなりの改善…だと思います。

効率よく短くまとめる事ができるはずなのですが、技術も知識もないのでGitHub - sakots/noe: noe-board, the new oekaki BBS for php7のコードを拝借して、必要な変数を一個づつ追加していきました。
3行だった箇所が100行以上に膨れ上がりましたが、処理速度は速くなりました。

計測は、PHPの処理速度を計測 - Qiitaで…。
$usercode = ( isset($_COOKIE["usercode"]) === true ) ? ($_COOKIE["usercode"]): false;//falseならuser-codeを発行
//user-codeの発行
//if(!isset($usercode)){
if(!$usercode){//falseなら発行
$usercode =
動作確認に何日もかかった箇所。
user-codeのcookieが取得できない…。
isset($_COOKIE["usercode"])のところで未定義なら空文字となり、空文字でも定義ずみだからuser-codeを発行しないとなっていたただけでした。

もし未定義ならfalse、falseならuser-codeを発行するようにしました。
この箇所が今回の書き直しの最大の難関…でした。

そして、php5.2で動作確認してみると…文字化け。
$buf = charconvert(HtmlTemplate::t_buffer($template,$dat),'utf-8');
文字コードをutf-8に統一する時に4に置換したのがいけなかったようです。utf-8で出力するように書き直したところ、php5.2からphp7.2まで正常に動作するようになりました。

php4では動作しなくなっているので、動作するphpのバージョンを
if(phpversion()>="5.2.0"){
としました。

そして、@を使ったエラー制御があまりにも多かったので、@を外しました。
@を外したところディレクトリが存在しているからディレクトリを作れないというWarningが発生。
もし、ディレクトリが無かった時は作るとしました。
@mkdir(IMG_DIR,0777);chmod(IMG_DIR,0777);
if(!is_dir(realpath(IMG_DIR))){
mkdir(IMG_DIR,0777);chmod(IMG_DIR,0777);
}
に書き直し。

書き直した行数があまりにも多いので、プログラムを書くのが大変だった…でも間違いではないのですが、どちらかというと動作確認に時間がかかって大変…でした。

今でもメンテナンスされていて、誰でも開発に参加できるお絵かき掲示板のスクリプトはnoeを除くとPOTI-board改だけです。誰でも設置できるお絵かき掲示板の最後の砦になってしまいました。

この変更はPOTI-board改 v1.50.0に反映されました。

お絵かき掲示板交流サイトはこちら。

POTI-boardの処理速度をあげるために

PHP: for - Manual

for($i = 0; $i < count($people); ++$i) {
$people[$i]['salt'] = mt_rand(000000, 999999);
}
このコードは実行速度が遅くなることでしょう。 というのも、配列のサイズを毎回取得しているからです。 サイズが変わることはありえないのだから、これは簡単に最適化することができます。 配列のサイズを変数に格納して使うようにすれば、 何度も count() を呼ばずに済むのです。
他のfor文では変数に格納して処理しているのに、その他のfor文で同じ処理を変数に格納しないで行っているのは…整理したほうがいいので…。
//ここでcount($tree)を使うとループの回数分countする。$counttree = count($tree);で定義ずみ。
for($i = 0; $i < $counttree ; $i+=PAGE_DEF){
//中略
}
変数に置き換える事ができる箇所がそのほかにもあったので書き換えました。
念のため、
var_dump($counttree);
var_dump(count($tree));
が同じ結果になる事を確認しました。
var_dump($counttree);
var_dump(count($tree));
if($counttree > $next){
$dat['next'] = PHP_SELF.'?mode=catalog&amp;page='.$next;
}
POTI-board カタログモード var_dump($counttree); var_dump(count($tree));
どちらも(int)554。
はじめから
$counttree=count($tree);
for($i = 0;$i<$counttree;$i++){
//中略
}
となっている箇所もありました。

お絵かき掲示板交流サイトのPOTI-boardの該当箇所を書き直しました。

POTI-board改にこれからプルリクエスト…。

お絵かき掲示板はこちら。

POTI-boardのエラーを減らすために メール通知クラス編

POTI-boardの、メール投稿通知機能に使われているnoticemail.incというメール通知クラスから非推奨のエラーがでていました。
potiboard.phpに
ini_set( 'error_reporting', E_ALL );
を追加して、すべてのエラーを表示するように設定して調べた筈では?
投稿の直後に一瞬ちらっとみえるエラーが気になったので、「画面を切り替えます」の表示秒数を1秒から10秒に変更して確認してみたところ
Deprecated: Non-static method noticemail::send() should not be called statically in C:\xampp\htdocs\hoge\test\potiboard.php on line 1276
htmltemplate.incで発生していたのと同じエラーでした。
static 宣言されていないメソッドに対する static 呼び出しが非推奨となりました。 将来的には削除される見込みです
static 宣言すればエラーはでなくなるのですが…。本当にそれでいいのかどうかは、phpのバージョンがあがってみないとわからないという…。
とりあえずstatic 宣言して、E_DEPRECATEDが発生しないようにする事はできましたが…。実は動きませんだと困りますね…。
public static function send($data,$usemb="1"){
public staticをつけただけ…です。

そして、Noticeはもうでなくなった筈だったのですが…。

お絵かき掲示板 POTI-board 画像なし二重投稿の時に発生するNoticeお絵かき掲示板 POTI-board 画像なし二重投稿の時に発生するNotice

画像なしにチェックが入っていて二重投稿のエラーになる時にNoticeが発生していました。
if(isset($com)){
if(isset($textonly) && $textonly){//画像なしの時
$dest="";
}
switch文の手前だったので、画像なし=textonlyの時は画像に関する変数に空文字がはいるようにしました。
しかし、今度は…。

お絵かき掲示板 POTI-board 画像なしの時に発生するNoticeお絵かき掲示板 POTI-board 画像なしの時に発生するNotice
画像なしにチェックをいれてテキストの投稿に成功した時にNoticeが発生…。
たしか対策済みだった筈…と思って該当行をみてみると、
if(!isset($dest)){
$dest=$ext=$W=$H=$chk="";
}
もし、$destが未定義なら変数を空文字にとしていたため、$destに空文字がはいって定義済みの空文字となり、他の変数が空文字にならなくなっていました。

画像なしにチェックが入っている…という段階で、画像に関する変数が空文字になっても問題ない筈なので、
if(isset($textonly) && $textonly){
$dest=$ext=$W=$H=$chk="";
}
に書き換えました。

お絵かき、画像アップロード、レスでお絵かき、レス画像アップロード。
画像なしテキストのみ、レス画像なしテキストのみの組み合わせで1時間ほどテストして、お絵かき掲示板交流サイトのPOTI-boardに組み込みました。

この変更は、POTI-board改 v1.45.6 lot.181202に反映されました。

POTI-boardのログファイルの上限を2MBに

ぷち的ココロ♪

総レス数がまだ2800を超えた程度なのに、親記事のナンバーの低いスレが消えてしまっていました。
親記事ナンバー+5000レスをスレの消える寿命に設定するにはどうしたらいいのでしょうか?

スクリプトをちょっと見ただけなので間違いかもしれませんが
バッファに1000000byte読み込む処理があったので
logファイルの上限がおそらく約1Mbyteだと思います。
その上限を超えたので2800でレスが消えたのではないでしょうか
POTI-boardのログファイルの上限の1000000byteは15年前に設定されたものです。
パソコンに搭載されているメモリはこの15年で…。
今ではメモリ4GB…それでも少ないという時代になりましたが、15年前はハードディスクが8GBだったり…。
2倍の2MBに拡張しても問題なさそうな気がしたので、2倍の2000000byte…だと2MB以下になってしまうので該当箇所を
$buf=fread($fp,2097152);
$buf=fread($tp,2097152);
に書き換えました。
5MBのログに書き込み処理を行うと、2MBになる事を確認しました。

お絵かき掲示板交流サイトで使っているPOTI-boardのログの上限は5MBですが動作が重くなるようならログをリセットして運用するつもりです。
配布するスクリプトも5MB…だと、無料のサーバなどで問題がでるかもしれませんし、動作が重くなるかもしれません。
2倍の2MBならという判断です。

お絵かき掲示板 POTI-board Notice削減お絵かき掲示板 POTI-board Notice削減
if(isset($savepng)){
$dat['savetypes'].= "<option value='PNG'".$savepng.">PNG</option>\n";
}
if(isset($savejpeg)){
$dat['savetypes'].= "<option value='JPEG'".$savejpeg.">JPEG</option>\n";
}
保存形式をAUTO、PNG、JPEGから選択するテンプレートは今はほとんど使われていません。NEOでは何を選択してもPNGになるのであまり意味がありません。しかし、しぃペインターでは有効な設定なので、テンプレートに選択項目が無くてもNoticeが出ないように書き直しました。

お絵かき掲示板 POTI-board Notice削減お絵かき掲示板 POTI-board Notice削減
// if(!$com&&!@is_file($dest)) error(MSG008,$dest);

if(!$com&&!@is_file($dest)) error(MSG008);
画像が無い事を確認してエラー画面を表示しているのに、画像に関する処理をしようとしてNoticeがでていたので書き直しました。
<!--(// しぃで反映されない上にお絵かき画面でパレット変更できるのでコメント化
パレット<select name=palette><option value="" selected> デフォルト</option>
{$palette}
</select>
)-->
v1.32の MONO WHITEでコメントアウトされ、そのほかのテンプレートでも使用されていない機能でNoticeがでていたので、
//v1.32のMONO WHITEでコメントアウト、対応テンプレートが無いパレット選択用データ(selectタグ用option配列)
// $lines = file(PALETTEFILE);
// foreach ( $lines as $line ) {
// $line=preg_replace("/[\t\r\n]/","",$line);
// list($pid,$pname,) = explode(",", $line);
//if(isset($palette)){
// $dat['palette'] .= '<option value="'.$pid.'">'.CleanStr($pname)."</option>\n";
//}
// }
該当箇所をコメントアウトしました。

お絵かき掲示板 POTI-board Notice削減お絵かき掲示板 POTI-board Notice削減
if(isset($textonly) && $textonly){//画像なしの時
$upfile=$upfile_name=$pictmp=$picfile="";
if(!isset($resto)){$resto="";}
}
画像アップロード画面で、画像なしにチェックを入れた時に、Noticeが発生していたので、textonlyの時は画像に関する変数を空文字に。
また、変数が定義されていてtrueの時は…という処理をifの入れ子にしていましたが&&でつなぐだけで良かったので書き直しました。

お絵かき、レスでお絵かき、画像アップロード、レス画像アップロード、文字だけ…。
数時間テストしましたがとりあえずNoticeなし。
ただし、設置時にできる[1]を削除しないとNoticeが出ます。
ログの形式が[1]だけ異なっている事が原因なので、それを修正できればでなくなる筈なのですが…。
そして、管理画面で記事を削除するとNoticeが発生…。
2行程度ですが…。

この変更は、POTI-board改 v1.45.5 lot.181129に反映されました。

お絵かき掲示板はこちら。

POTI-boardのエラーを減らすために 動画再生編

PaintBBS NEOが動画の記録と再生に対応したので、絵板に動画へのリンクが増えて来ました。

動画を見ようとしてクリックすると…。

POTI-board お絵かき掲示板の改造

動画ファイルが存在しないというWarningが発生する事例が何件が…。
リロードしても動画ファイルは見当たらないまま…。

POTI-boardの動画再生のurlは画像のファイル名と紐付けられているので、続きから描いて画像のファイル名が変われば動画のurlも変わってしまいます。

つまり、掲示版を開いて動画のリンクをクリックしたタイミングによっては動画のファイルが無いかもしれません。
Google検索結果から動画のリンクを開いた時にも、動画がなくてWarningが発生していました。
if(file_exists($pchfile)){//動画が差し換えられていた時
$datasize = filesize($pchfile);
$size = getimagesize($picfile);
if(!$sp) $sp = PCH_SPEED;
$picw = $size[0];
$pich = $size[1];
$w = $picw;
$h = $pich + 26;
if($w < 200){$w = 200;}
if($h < 226){$h = 226;}
}
else{
$w=$h=$picw=$pich=$datasize="";
}
file_existsでファイルの存在を確認してから処理するようにしました。

POTI-board お絵かき掲示板の改造
動画が無い時は表示しないだけなのですが…。

POTI-board お絵かき掲示板の改造

.htaccessで、キャッシュの有効期限を過去にすればキャッシュされなくなるので問題ないのですが、投稿してもリロードしないと画面が更新されない、これはバグだ…と言われてしまったりもしているので、urlパラメータを追加してキャッシュを表示しないように。

さくらのブログの管理画面から記事を見るのリンクをクリックした時にurlのあとにつく、
?1542988451と同じ形式のurlパラメータです。
投稿するたびに変化するurlパラメータで、ブラウザに別のurlと認識させて、キャッシュを表示しないようにします。
<Files ~ "\.html?$">
<IfModule mod_headers.c>
Header set Pragma no-cache
Header set Cache-Control no-cache
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
</IfModule>
</Files>
.htaccessの使い方がわかっている方なら、これをコピペしてPOTI-boardのフォルダに入れるだけでHTMLファイルをキャッシュしないようにする事ができます。
サーバによってはうまくいかない場合もあるようですがさくらのレンタルサーバはこの設定で問題ありませんでした。
.htaccessでキャッシュの有効期限を過去にしたほうが、見た目もスマートだし掲示版を開いた時にキャッシュが表示される事もありません。
.htaccessで設定できない場合には有効かもしれない機能の追加…でした。

この変更は、POTI-board改 v1.45.3 lot.181122に反映されました。

お絵かき掲示板はこちら。