PHP 2023年04月15日 17:19   編集
XamppをアップデートしたらPHPが8.2.4になった。

文字列中の変数展開

文字列中で変数展開するとき、ほかの文字列と干渉するのを避けるため変数名を{}で囲う場合があるが、囲い方が悪いと
Using ${var} in strings is deprecated, use {$var} instead in
と警告が出るようになった。$も含んで囲わないとだめということだ。
結構あちこちで${var}と書いているので、サクラエディタの置換機能を使って一気に置換することにする。
正規表現を有効にして置換前は
\${(.+?)}
置換後は
{\$$1}
とすれば効率的に置換できる。
戻る

bbs.phpのヘルプ

掲示板を作成する
■ファイルアップロード、返信、過去ログ生成、隠しパラメータ送信によるスパム投稿対策、スライドロックによるスパム投稿対策
オプションは[[bbs('lock=1|max_log=100|item=thread')]]のように指定

指定できるオプション

form (現在の設定はform=up)
form=up(フォームを上に表示) form=down(フォームを下に表示)
item (現在の設定はitem=time)
デフォルトの記事表示順を指定
item=time(投稿順) item=thread(スレッドごとに表示)
max_log (現在の設定はmax_log=100)
現行ログの保存数。これを超えると過去ログに移動。
例 max_log=50
max_past (現在の設定はmax_past=100)
過去ログに保存する記事数。これを超えると過去ログファイルを新たに作成。
例 max_past=100
page_line (現在の設定はpage_line=10)
1ページに表示する記事数。これを超えると次のページに表示
例 page_line=10
lock (現在の設定はlock=1)
スライダで投稿ボタンをロックする lock=1で表示する
例 lock=1
perm_tag (現在の設定はperm_tag=)
許可するタグ。複数ある場合は;(セミコロン)で区切る。
有効になるのはタグ名だけを<>で囲った場合とその閉じタグだけ。styleなどは指定できない。
例 perm_tag=pre;h1
nameless (現在の設定はnameless=id)
投稿者名未入力で投稿した場合、表示される名前を指定。'id'にすると、日付とIPアドレスを元にしたIDを表示
例 nameless=id
titleless (現在の設定はtitleless=無題)
タイトル未入力で投稿した場合、表示されるタイトルを指定。
例 titleless=タイトルなし
hide_bbs (現在の設定はhide_bbs=1)
デフォルトでフォームと投稿内容を隠す hide_bbs=1で隠す
例 hide_bbs=1
show_text (現在の設定はshow_text=)
添付したtextファイルの内容を表示する show_text=txt;phpのように表示するテキストファイルの拡張子を指定する。複数ある場合は;(セミコロン)で区切る
例 show_text=txt;log

counter:1,855
CGI 2023年02月26日 14:54   編集

お知らせ

ver.1.974までのスクリプトにセキュリティの上の問題があることがわかったので、必ず対策を施したver.1.975以降にバージョンアップしてください。
続きを読む
counter:6,621
PHP 2022年10月13日 23:44   編集
用語集を作成するためのPHPプログラムです。
  • インデックスを新着順、索引、カテゴリー別に切り替えられます。
  • 記事内に他の記事のタイトルがあれば自動的にリンクを張り、記事の内容を一部ポップアップ表示します。
  • 記事にカテゴリーを設定することができます。カテゴリーによる絞り込み、分類表示が可能です。一つの記事に複数のカテゴリーを指定することができます。
  • 同じタイトルで内容が違う記事を複数作成することができます。
  • 管理者設定で「管理者のみ投稿可」、「誰でも投稿可」を指定できます。
  • pluginディレクトリにphpファイルを入れると、プラグインとして機能させることができます。
続きを読む
counter:8,778
PHP 2022年10月06日 02:05   編集
掲示板PHPスクリプトです。
利用者に負担をかけずにスパム対策するというのがコンセプトで、以下の対策をとっています。
続きを読む
counter:5,261
PHP 2022年10月03日 20:20   編集
姉妹ページ?で紹介しているサブネット計算PHPのアクセスが結構多いらしいのですが、「ページがモバイル フレンドリーではありません。」などと表示されていたので、レスポンシブ対応に書き換えてみました。せっかくなので公開します。
戻る

bbs.phpのヘルプ

掲示板を作成する
■ファイルアップロード、返信、過去ログ生成、隠しパラメータ送信によるスパム投稿対策、スライドロックによるスパム投稿対策
オプションは[[bbs('lock=1|max_log=100|item=thread')]]のように指定

指定できるオプション

form (現在の設定はform=up)
form=up(フォームを上に表示) form=down(フォームを下に表示)
item (現在の設定はitem=time)
デフォルトの記事表示順を指定
item=time(投稿順) item=thread(スレッドごとに表示)
max_log (現在の設定はmax_log=100)
現行ログの保存数。これを超えると過去ログに移動。
例 max_log=50
max_past (現在の設定はmax_past=100)
過去ログに保存する記事数。これを超えると過去ログファイルを新たに作成。
例 max_past=100
page_line (現在の設定はpage_line=10)
1ページに表示する記事数。これを超えると次のページに表示
例 page_line=10
lock (現在の設定はlock=1)
スライダで投稿ボタンをロックする lock=1で表示する
例 lock=1
perm_tag (現在の設定はperm_tag=)
許可するタグ。複数ある場合は;(セミコロン)で区切る。
有効になるのはタグ名だけを<>で囲った場合とその閉じタグだけ。styleなどは指定できない。
例 perm_tag=pre;h1
nameless (現在の設定はnameless=id)
投稿者名未入力で投稿した場合、表示される名前を指定。'id'にすると、日付とIPアドレスを元にしたIDを表示
例 nameless=id
titleless (現在の設定はtitleless=無題)
タイトル未入力で投稿した場合、表示されるタイトルを指定。
例 titleless=タイトルなし
hide_bbs (現在の設定はhide_bbs=1)
デフォルトでフォームと投稿内容を隠す hide_bbs=1で隠す
例 hide_bbs=1
show_text (現在の設定はshow_text=)
添付したtextファイルの内容を表示する show_text=txt;phpのように表示するテキストファイルの拡張子を指定する。複数ある場合は;(セミコロン)で区切る
例 show_text=txt;log

counter:3,616
CGI 2022年06月27日 16:41   編集
CPANで公開されているモジュールを使いたいときのメモ
  1. CPANのサイトの検索フォームで探したいモジュールを検索する
  2. Scalar::Utilモジュールを探しているなら、「Scalar::Util」と入力して探す。
    検索結果からそれらしい「Scalar::Util」をクリックする。
counter:3,607
PHP 2022年03月22日 20:03   編集
CGIの詳細予定表と長期予定表を合わせたようなPHPプログラムです。
1.png
2022/03/22 ver.0.053
PHP8でエラーが出るのを修正しました。
  • スケジュールの時間をグラフ表示します。1日に複数の予定を登録した場合、時間が重ならない限り同じライン上に表示されます。
  • スケジュールの登録は1分単位で可能(設定による)ですが、グラフの表示はそこまで正確ではありません(^^;
  • スケジュールにはカテゴリー、タイトル、コメントを保存することができ、カテゴリーごとに違う色で表示されます。
  • 2日間に渡る予定には対応していません。終了時間が24時を越える予定の場合は25:30のように設定することもできますが、表示は24時で切れます(設定で終了時間を24時以降にすることも可能です)。
  • 定期的なスケジュールを一括入力、一括変更することができます。一括入力されたスケジュールも個別に編集することができます。
counter:5,839
PHP 2022年03月22日 19:42   編集
PHP/用語集作成 PHP/掲示板PHPにブルートフォース攻撃対策処理を追加しましたが、他にも使えるかもしれないと思ったので、対策処理部分をモジュールにしました。
login_ver1.05.zip (36Download)
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分間ログインをロックします。
続きを読む
counter:5,238
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に変換しても値が変わらないのでアラートは出ない。
戻る

bbs.phpのヘルプ

掲示板を作成する
■ファイルアップロード、返信、過去ログ生成、隠しパラメータ送信によるスパム投稿対策、スライドロックによるスパム投稿対策
オプションは[[bbs('lock=1|max_log=100|item=thread')]]のように指定

指定できるオプション

form (現在の設定はform=up)
form=up(フォームを上に表示) form=down(フォームを下に表示)
item (現在の設定はitem=time)
デフォルトの記事表示順を指定
item=time(投稿順) item=thread(スレッドごとに表示)
max_log (現在の設定はmax_log=100)
現行ログの保存数。これを超えると過去ログに移動。
例 max_log=50
max_past (現在の設定はmax_past=100)
過去ログに保存する記事数。これを超えると過去ログファイルを新たに作成。
例 max_past=100
page_line (現在の設定はpage_line=10)
1ページに表示する記事数。これを超えると次のページに表示
例 page_line=10
lock (現在の設定はlock=1)
スライダで投稿ボタンをロックする lock=1で表示する
例 lock=1
perm_tag (現在の設定はperm_tag=)
許可するタグ。複数ある場合は;(セミコロン)で区切る。
有効になるのはタグ名だけを<>で囲った場合とその閉じタグだけ。styleなどは指定できない。
例 perm_tag=pre;h1
nameless (現在の設定はnameless=id)
投稿者名未入力で投稿した場合、表示される名前を指定。'id'にすると、日付とIPアドレスを元にしたIDを表示
例 nameless=id
titleless (現在の設定はtitleless=無題)
タイトル未入力で投稿した場合、表示されるタイトルを指定。
例 titleless=タイトルなし
hide_bbs (現在の設定はhide_bbs=1)
デフォルトでフォームと投稿内容を隠す hide_bbs=1で隠す
例 hide_bbs=1
show_text (現在の設定はshow_text=)
添付したtextファイルの内容を表示する show_text=txt;phpのように表示するテキストファイルの拡張子を指定する。複数ある場合は;(セミコロン)で区切る
例 show_text=txt;log

counter:4,019
2021年09月09日 13:09   編集
改行コードってあまり気にしていなかったが、あまり無頓着だとトラブルになるようだ。
Linuxサーバー上での動作をチェックするために久しぶりにCGIファイルをWebサーバーにアップロードしてみたのだが、
500エラーで動作しないという問題が発生した。パーミッションをいじっても動くようにならず、なんでだと思っていたら
CGIファイルの改行コードがCRLFになっていたのが原因だった。

以前はCRLFでもエラーは出ていなかったはずと思ったが、どうも以前はFTPソフトでテキストモードでアップロードしていたので、自動的に改行コードがサーバーにあったものに変換されていたようだ。最近はテキストモードではなくバイナリモードでアップロードしているので、CRLFのファイルはCRLFのままアップされる。

整理しておくと改行コードはLF、CR、CRLFとあって、OSによって使う改行コードが違う。
LinuxなどUNIX系はLF、MacはCR、WindowsはCRLFを使う。プログラムでは、LFは"\n" CRは"\r" CRLFは"\r\n"と記述する。

でWeb上のサーバーはLinux系が多いので、そこで使用するCGIファイルはLFを使わなければならないということなのだろうが、不思議なことにPHPはCRLFのままでも問題なく動いている。
それとWindowsにインストールしたXamppでは、WindowsなのでCRLFで動くのは当然として、LFでも問題なく動く。

Webサーバー上のCGIファイルの改行コードは、OSで使用する改行コードを使うことが望ましいが、使わないと絶対ダメというほどではないということか。いずれにしても、WebプログラムのファイルはLFで統一しておくのが無難かもしれない。
ちなみにWindows標準のテキストエディタ「メモ帳」は、以前はLF改行コードでは改行されなかったが、最近のはちゃんと改行されるようだ。
戻る

bbs.phpのヘルプ

掲示板を作成する
■ファイルアップロード、返信、過去ログ生成、隠しパラメータ送信によるスパム投稿対策、スライドロックによるスパム投稿対策
オプションは[[bbs('lock=1|max_log=100|item=thread')]]のように指定

指定できるオプション

form (現在の設定はform=up)
form=up(フォームを上に表示) form=down(フォームを下に表示)
item (現在の設定はitem=time)
デフォルトの記事表示順を指定
item=time(投稿順) item=thread(スレッドごとに表示)
max_log (現在の設定はmax_log=100)
現行ログの保存数。これを超えると過去ログに移動。
例 max_log=50
max_past (現在の設定はmax_past=100)
過去ログに保存する記事数。これを超えると過去ログファイルを新たに作成。
例 max_past=100
page_line (現在の設定はpage_line=10)
1ページに表示する記事数。これを超えると次のページに表示
例 page_line=10
lock (現在の設定はlock=1)
スライダで投稿ボタンをロックする lock=1で表示する
例 lock=1
perm_tag (現在の設定はperm_tag=)
許可するタグ。複数ある場合は;(セミコロン)で区切る。
有効になるのはタグ名だけを<>で囲った場合とその閉じタグだけ。styleなどは指定できない。
例 perm_tag=pre;h1
nameless (現在の設定はnameless=id)
投稿者名未入力で投稿した場合、表示される名前を指定。'id'にすると、日付とIPアドレスを元にしたIDを表示
例 nameless=id
titleless (現在の設定はtitleless=無題)
タイトル未入力で投稿した場合、表示されるタイトルを指定。
例 titleless=タイトルなし
hide_bbs (現在の設定はhide_bbs=1)
デフォルトでフォームと投稿内容を隠す hide_bbs=1で隠す
例 hide_bbs=1
show_text (現在の設定はshow_text=)
添付したtextファイルの内容を表示する show_text=txt;phpのように表示するテキストファイルの拡張子を指定する。複数ある場合は;(セミコロン)で区切る
例 show_text=txt;log

counter:4,342