PHP 2022年09月23日 03:45   編集
new!
用語集を作成するためのPHPプログラムです。
  • インデックスを新着順、索引、カテゴリー別に切り替えられます。
  • 記事内に他の記事のタイトルがあれば自動的にリンクを張り、記事の内容を一部ポップアップ表示します。
  • 記事にカテゴリーを設定することができます。カテゴリーによる絞り込み、分類表示が可能です。一つの記事に複数のカテゴリーを指定することができます。
  • 同じタイトルで内容が違う記事を複数作成することができます。
  • 管理者設定で「管理者のみ投稿可」、「誰でも投稿可」を指定できます。
  • pluginディレクトリにphpファイルを入れると、プラグインとして機能させることができます。
続きを読む
counter:4,803
PHP 2022年09月07日 00:49   編集
new!
掲示板PHPスクリプトです。
利用者に負担をかけずにスパム対策するというのがコンセプトで、以下の対策をとっています。

bbs.phpのスパム対策

ダミーフィールドからの投稿
スパム投稿はフォームのHTMLを解析して値を送信してくるため、CSSで非表示にしたフィールドのデータも送信する場合がある。その場合はスパムと判断して拒否する。
フォームIDのチェック
ブラウザで投稿フォームを表示するたびにユニークな投稿IDを生成し、そのIDを正しく送ってこない投稿を拒否する。フォームを表示せず、直接クエリ送信で投稿しようとするスパムを防ぐ。
投稿時間のチェック
フォームを表示してから投稿ボタンを押すまでの時間が早すぎるとロボットの投稿と判断して拒否
スライドロック
JavaScriptで表示されるボタンをスライドしないと投稿ボタンが押せず、投稿を受け付けないことによって、ロボットからの投稿を拒否する。
純粋なロボットによる投稿だと上記の対策でそこそこ効果がありますが、突破してくる投稿も多いので、以下の対策も追加しています。
ひらがなチェック
コメントにひらがなが連続2個以上含まれていないと投稿拒否
外国語の投稿をブロックするため。通常の日本語の文章なら、少なくともひらがな2個以上は含まれるはず
タイトルにURL
タイトルにURLが入っているスパムが多いため。
URL3個以上
URLを羅列するタイプの投稿を防ぐため。
禁止用語
禁止ワードを含む投稿を拒否する。
拒否IP
登録したIPアドレスからの投稿やアクセスを拒否する。

counter:603
PHP 2022年03月22日 20:02   編集
CGIの詳細予定表と長期予定表を合わせたようなPHPプログラムです。
1.png
2022/03/22 ver.0.053
PHP8でエラーが出るのを修正しました。
  • スケジュールの時間をグラフ表示します。1日に複数の予定を登録した場合、時間が重ならない限り同じライン上に表示されます。
  • スケジュールの登録は1分単位で可能(設定による)ですが、グラフの表示はそこまで正確ではありません(^^;
  • スケジュールにはカテゴリー、タイトル、コメントを保存することができ、カテゴリーごとに違う色で表示されます。
  • 2日間に渡る予定には対応していません。終了時間が24時を越える予定の場合は25:30のように設定することもできますが、表示は24時で切れます(設定で終了時間を24時以降にすることも可能です)。
  • 定期的なスケジュールを一括入力、一括変更することができます。一括入力されたスケジュールも個別に編集することができます。
counter:1,957
PHP 2022年03月22日 19:42   編集
PHP/用語集作成 PHP/掲示板PHPにブルートフォース攻撃対策処理を追加しましたが、他にも使えるかもしれないと思ったので、対策処理部分をモジュールにしました。
login_ver1.05.zip (6Download)
ver.1.01        2021.07.27    メール送信機能を追加。function send_mail追加
ver.1.02        2021.07.28    メール送信のルールを整理。ロックディレクトリの大文字小文字を識別するように修正。
ver.1.03        2021.08.06    関数外で指定した変数が反映されない場合があるのを修正。
ver.1.04        2021.08.10    utf-8以外の文字コードのPHPファイルから呼び出す場合、IDやパスワードが日本語だとうまく動作しないのを修正。
ver.1.05        2022.03.22    若干修正。
総当たり攻撃はユーザーIDを固定して複数のパスワードでの認証を試みるブルートフォースアタックと、逆にパスワードを固定して複数のユーザーIDでの認証を試みるリバースブルートフォースアタックというのがあるということなので、このモジュールでは同じIDあるいは同じパスワードで10分間にに3回ログインに失敗したら60分間ログインをロックします。続きを読む
[1]IPアドレスを変えながら攻撃してくる場合、指定回数ごとに緊急解除ワードを挟んで試行することによって非常ドアからの連続攻撃が可能になります。
IPアドレス固定の場合は、緊急解除ワードを使ってもIPアドレスのロックは解除できません
counter:545
PHP 2022年03月18日 19:34   編集
XamppをアップデートしたらPHPも8.1.2になった。
いくつか推奨されなくなる機能がある。ウチのPHP関係では

暗黙の float から int への変換

intを使わなくてはいけない時にfloatを使っていた場合、アラートが出るようになった。
$width = 92.5;
$height = 50.1;
$canvas = imagecreatetruecolor($width, $height);
これまでは黙ってintに変換して適用していたが、元のfloatの値と変わってしまうのでアラートを出すことにしたらしい。単にintで指定すべきところをfloatで指定したからというわけではなく、
$width = 92.0;
のように小数点以下が0の場合はintに変換しても値が変わらないのでアラートは出ない。
counter:51
PHP Perl 2021年08月18日 19:51   編集
PerlからPHPへ書き換えからの続きです。

qq()を""へ置換して内部の"をエスケープするのがエディタの正規表現置換ではうまくいかないということで、PHPを使ってその書き換えをすることにしましたが、どうせならついでにほかの置換部分、ダブった変数の書き換えもやれるようにしたのが、perl2php.phpです。
ver.1.0    2014/11/28    機能制限モード追加
ver.1.1    2021/08/18    PHP8でうまく動かないのを修正
久しぶりに更新しました。PHPの仕様変更への対策だけですが。Xampp8.0.3参照
webに置いて使用するようなものではないので、ローカルでのみ実行可能ですが、機能制限版をアップしました。
xamppなどを入れてローカルでPHPを動かせる環境を持ち、自分でperlやPHPを書いている人対象ということになります。使用する場合ははあくまでも自己責任でお願いします。続きを読む
counter:4,404
PHP 迷惑投稿対策 2021年06月30日 19:54   編集
スパム投稿対策研究のために設置した掲示板を長いこと放置していたら、スパム投稿でひどいことになっていた。対策は継続してやらないとダメのようだ。
旧掲示板のURLから今回新たに公開したbbs.phpにリダイレクトするようにした。PHP/掲示板PHP
  • ./yybbs/yybbs.cgi → ./yybbs/bbs/bbs.php
  • ./clip/clip.cgi → ./clip/bbs/bbs.php
できればスパム投稿を続けてもらって、bbs.phpがどれだけスパム防止効果があるか調べてみようということだ。とはいってもフォームから投稿してくるスパムはほとんど無いと思うので、これまでのスパムがすべて新掲示板に流れるわけではないと思うが。
・・・と思っていたが掲示板2の方はさっそく前の掲示板と同じ傾向のスパム投稿が来ている。JavaScriptのスライドロックも効果が無いので、ひょっとしたら人が投稿している?

bbs.phpのスライドロックは、ロボットはJavaScriptは無視するらしいということに期待して、JavaScriptで表示するロックを外さないと投稿できないという仕組みだ。ボタンを横にスライドするだけなので、読みにくい文字を入力したり、写真を選ぶ必要はない。この記事のテーマであるユーザーの負担が少ないスパム投稿対策というわけだ。続きを読む
counter:445
PHP Shade 2021年06月19日 02:29   編集
Shadeプラグイン・スクリプト検索もレスポンシブ対応にしようかなと思って、久しぶりにCGIファイルを見てみたら、いろいろ他にも気になる部分が目について、結局ゼロからPHPで書き直すことにした。ちょこちょこ修正しているとはいえ、元はなんせ20年も前に書いたものだからなー。

スムーズに移行できるようログは旧CGIで作成したものをそのまま流用するつもりだったが、データを1個のファイルにすべて保存する形式にしていたのがどうも気になる。ダウンロードカウントもこのファイルに書き込む方式だったので、アクセスがあるたびにデータファイルを書き換える処理をしていたことになる。最初のころしょっちゅうログファイルが壊れていたのはこれが原因だったのかもしれない。
さすがにこれはないだろうと、まず新しいPHPプログラムでアクセスすると旧データファイルを扱いやすいデータ形式に書き換えることにする。登録内容1件ごとにファイルを作成することにして、ダウンロードは別ファイルでカウントすることにする。新方式のデータファイルを作成したら旧データファイルにはアクセスしないことにした。続きを読む
[2]指定時間に指定コマンドを実行する機能
counter:345
PHP 2021年04月26日 11:52   編集
長過ぎる文字列を切り詰めて短くしたいことがよくあるので、指定した文字数以上の文字は指定数に切り詰めて省略記号をつけるという処理のために以下のような関数を使っていましたが、思うように動かないことが多々ありました。
function jtruncate($str,$n) {
    if ($n < 2) { return ; }
    if (strlen($str) <= $n) { return $str ; }
    $substr = mb_substr($str,0,intval($n/2),"UTF-8") . '...';
    return $substr;
}
たとえばこの関数を使って
print jtruncate('PHPのコード',14);
を実行すると
PHPのコード...
と切り詰めていないはずなのに切り詰めた記号...が表示されてしまいます。続きを読む
[3]UTF-8では、3以外の文字数とカウントされる全角文字もあるようです
[4]実際には第2パラメーターで文字コードを指定しない場合は内部文字エンコーディングが使用される
counter:206
PHP 迷惑投稿対策 2020年03月25日 19:58   編集
Kent-Webのサポート掲示板で教えてもらったjQueryのslidelockというスパム対策機能を、この用語集作成PHPのbbsプラグインで使えるようにしてみました。→PHP/用語集作成
タイトル
投稿者
編集パスワード
コメント
添付
キーワード
  • Re:投稿者名 2020-03-25 20:03:02 MjI2YWEzM2  返信  編集
    >は太文字で表示するようにしました。
    投稿者を省略した場合、日にちとIPアドレスを元にした固有の文字列を表示するようにしました。
  • 投稿者名 2020-03-25 20:01:03 管理人  返信
    は太文字で表示するようにしました。
  • フォームを隠す 2020-03-23 11:32:49 管理人  返信  編集
    フォームを隠すオプションを追加しました。
    表示するかしないかの設定はクッキーに保存する仕様にしてみました。
  • 無題 2020-03-17 18:30:52 管理人  返信
    [[bbs('lock=1')]]と記述するとスライドが表示され、四角をスライドさせないと投稿ボタンが押せないしかけです。
counter:4,754