PHP 2022年03月22日 20:03 編集
CGIの詳細予定表と長期予定表を合わせたようなPHPプログラムです。
- 2022/03/22 ver.0.053
- PHP8でエラーが出るのを修正しました。
- サンプル
- ダウンロード
calendar_plus_ver0.054.zip (15Download)
calendar_plus_ver0.053.zip (40Download)
-
スケジュールの時間をグラフ表示します。1日に複数の予定を登録した場合、時間が重ならない限り同じライン上に表示されます。
- スケジュールの登録は1分単位で可能(設定による)ですが、グラフの表示はそこまで正確ではありません(^^;
- スケジュールにはカテゴリー、タイトル、コメントを保存することができ、カテゴリーごとに違う色で表示されます。
- 2日間に渡る予定には対応していません。終了時間が24時を越える予定の場合は25:30のように設定することもできますが、表示は24時で切れます(設定で終了時間を24時以降にすることも可能です)。
- 定期的なスケジュールを一括入力、一括変更することができます。一括入力されたスケジュールも個別に編集することができます。
counter:5,779
PHP Perl 2021年08月18日 19:52 編集
PerlからPHPへ書き換えからの続きです。
qq()を""へ置換して内部の"をエスケープするのがエディタの正規表現置換ではうまくいかないということで、PHPを使ってその書き換えをすることにしましたが、どうせならついでにほかの置換部分、ダブった変数の書き換えもやれるようにしたのが、perl2php.phpです。
xamppなどを入れてローカルでPHPを動かせる環境を持ち、自分でperlやPHPを書いている人対象ということになります。使用する場合はあくまでも自己責任でお願いします。
qq()を""へ置換して内部の"をエスケープするのがエディタの正規表現置換ではうまくいかないということで、PHPを使ってその書き換えをすることにしましたが、どうせならついでにほかの置換部分、ダブった変数の書き換えもやれるようにしたのが、perl2php.phpです。
ver.1.0 2014/11/28 機能制限モード追加久しぶりに更新しました。PHPの仕様変更への対策だけですが。Xampp8.0.3参照
ver.1.1 2021/08/18 PHP8でうまく動かないのを修正
- ダウンロード perl2php_ver1.2.zip (26Download)
xamppなどを入れてローカルでPHPを動かせる環境を持ち、自分でperlやPHPを書いている人対象ということになります。使用する場合はあくまでも自己責任でお願いします。
counter:8,235
PHP 2022年10月03日 20:20 編集
姉妹ページ?で紹介しているサブネット計算PHPのアクセスが結構多いらしいのですが、「ページがモバイル フレンドリーではありません。」などと表示されていたので、レスポンシブ対応に書き換えてみました。せっかくなので公開します。
- サンプル
- ダウンロード  subnet.zip (11Download)
counter:3,482
PHP 2022年03月22日 19:42 編集
PHP/用語集作成 PHP/掲示板PHPにブルートフォース攻撃対策処理を追加しましたが、他にも使えるかもしれないと思ったので、対策処理部分をモジュールにしました。
login_ver1.05.zip (34Download)
ver.1.01 2021.07.27 メール送信機能を追加。function send_mail追加総当たり攻撃はユーザーIDを固定して複数のパスワードでの認証を試みるブルートフォースアタックと、逆にパスワードを固定して複数のユーザーIDでの認証を試みるリバースブルートフォースアタックというのがあるということなので、このモジュールでは同じIDあるいは同じパスワードで10分間にに3回ログインに失敗したら60分間ログインをロックします。
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 若干修正。
counter:5,042
PHP 2022年10月06日 02:05 編集
掲示板PHPスクリプトです。
- サンプル スパム投稿テスト用サンプル
- ダウンロード
bbs_ver1.06.zip (18Download)
bbs_ver1.059.zip (29Download)
counter:5,138
PHP 2022年10月13日 23:44 編集
用語集を作成するためのPHPプログラムです。
- サンプル
- ダウンロード
term_ver1.184.zip (15Download)
term_ver1.182.zip (33Download)
- インデックスを新着順、索引、カテゴリー別に切り替えられます。
- 記事内に他の記事のタイトルがあれば自動的にリンクを張り、記事の内容を一部ポップアップ表示します。
- 記事にカテゴリーを設定することができます。カテゴリーによる絞り込み、分類表示が可能です。一つの記事に複数のカテゴリーを指定することができます。
- 同じタイトルで内容が違う記事を複数作成することができます。
- 管理者設定で「管理者のみ投稿可」、「誰でも投稿可」を指定できます。
- pluginディレクトリにphpファイルを入れると、プラグインとして機能させることができます。
counter:8,603
PHP 2018年05月25日 16:37 編集
ローカルPCにインストールしているXamppをアップデートしてPHPのバージョンがPHP7.2.5になったらあちこちで警告が出るようになりました。
create_functionを使わず、ネイティブの無名関数を使ったほうがいいということです。具体的には
$attr['ID']がsetされてなかったら、''を代入するという処理です。$attrが未定義の場合も問題ないはずでなぜエラーになるかわかりませんでしたが、調べてみると$attrの型がstringになっている場合もあって、その状態で実行するとエラーになっているようです。エラーを回避するためにとりあえず上記の式の前に
'0.84479900 1527156353'
のような文字列を返しています。PHP7.1ではこの文字列のまま計算しても適当にfloatに変換してくれていましたが、7.2では警告が出るようになりました。microtime(True)を指定するとfloatを返しますが、小数点以下の桁数が減るので、文字列のままにした方がより精度の高いマイクロ秒が得られます。文字列は小数部分と整数部分をスペースで区切っているので、小数部分だけを抽出するために
バージョン7.2では、型について厳格になったようです。別の型ということになっているのにその型ではできない処理をしようとしたら、前のバージョンではその処理が行える型に変更したりする部分もあったが7.2以降ではエラーや警告を出すということになっているようです。
create_function()は非推奨
まず、create_function関数が非推奨になったためにその警告が出ます。create_functionを使わず、ネイティブの無名関数を使ったほうがいいということです。具体的には
create_function( '$a,$b', 'return strlen( $b ) - strlen( $a );' )は
function($a,$b) { return strlen( $b ) - strlen( $a ); }に変えます。
each()も非推奨
このほかeach()関数も非推奨になっています。mpdfモジュールでwhile(list($file,$info)=each($this->images)) {という部分で警告が出ているので、
foreach ($this->images as $file=>$info) {と変更すると警告は出なくなりました。
非配列に要素を追加すると警告
mpdfモジュール関係ではcssmgr.pdfでif (!isset($attr['ID'])) { $attr['ID']=''; }のような行でも警告が出るようになりました。
$attr['ID']がsetされてなかったら、''を代入するという処理です。$attrが未定義の場合も問題ないはずでなぜエラーになるかわかりませんでしたが、調べてみると$attrの型がstringになっている場合もあって、その状態で実行するとエラーになっているようです。エラーを回避するためにとりあえず上記の式の前に
if (isset($attr) && !is_array($attr)) { $attr = array(); }を追加するとなんとかエラーが出なくなりました。
文字列の計算をすると警告
$tm1 = microtime();を実行すると警告が出るようになりました。microtime()は、現在の Unix タイムスタンプをマイクロ秒単位で返す関数ですが、デフォルトではfloatではなく、
$tm2 = microtime();
echo $tm1 - $tm2;
'0.84479900 1527156353'
のような文字列を返しています。PHP7.1ではこの文字列のまま計算しても適当にfloatに変換してくれていましたが、7.2では警告が出るようになりました。microtime(True)を指定するとfloatを返しますが、小数点以下の桁数が減るので、文字列のままにした方がより精度の高いマイクロ秒が得られます。文字列は小数部分と整数部分をスペースで区切っているので、小数部分だけを抽出するために
list($tm1) = explode(' ',microtime());のように変更すると警告は出なくなりました。
list($tm2) = explode(' ',microtime());
echo $tm1 - $tm2;
配列の追加
キーが数値の配列に追加する場合はarray_push('abc')とするより
$array[] = 'abc';の方が速いらしいということで、もっぱら下を使っていますが、追加する変数の型が配列になっていないとエラーが出るようになりました。たとえば
$array = '';はエラーになるので、$arrayの型がarray以外になっている可能性がある場合は、
$array[] = 'abc';
unset($array)あるいは
$array = array();と初期化しておく必要があります。これは[]を使って配列を追加する場合だけでなく、配列型になっていない変数を配列として扱おうとすると、同じようなことが起こると思われます。
バージョン7.2では、型について厳格になったようです。別の型ということになっているのにその型ではできない処理をしようとしたら、前のバージョンではその処理が行える型に変更したりする部分もあったが7.2以降ではエラーや警告を出すということになっているようです。
counter:4,746
PHP 2022年03月18日 19:34 編集
XamppをアップデートしたらPHPも8.1.2になった。
いくつか推奨されなくなる機能がある。ウチのPHP関係では
いくつか推奨されなくなる機能がある。ウチのPHP関係では
暗黙の float から int への変換
intを使わなくてはいけない時にfloatを使っていた場合、アラートが出るようになった。$width = 92.5;これまでは黙ってintに変換して適用していたが、元のfloatの値と変わってしまうのでアラートを出すことにしたらしい。単にintで指定すべきところをfloatで指定したからというわけではなく、
$height = 50.1;
$canvas = imagecreatetruecolor($width, $height);
$width = 92.0;のように小数点以下が0の場合はintに変換しても値が変わらないのでアラートは出ない。
counter:3,908
PHP 2023年04月15日 17:19 編集
XamppをアップデートしたらPHPが8.2.4になった。
結構あちこちで${var}と書いているので、サクラエディタの置換機能を使って一気に置換することにする。
正規表現を有効にして置換前は
文字列中の変数展開
文字列中で変数展開するとき、ほかの文字列と干渉するのを避けるため変数名を{}で囲う場合があるが、囲い方が悪いとUsing ${var} in strings is deprecated, use {$var} instead inと警告が出るようになった。$も含んで囲わないとだめということだ。
結構あちこちで${var}と書いているので、サクラエディタの置換機能を使って一気に置換することにする。
正規表現を有効にして置換前は
\${(.+?)}置換後は
{\$$1}とすれば効率的に置換できる。
counter:1,792
PHP 暗号 2016年08月22日 12:20 編集
パスワードをハッシュ化する場合、perlでは、crypt関数を使うと有効な文字列が8文字までという制限が有るため、MD5モジュールを使ってハッシュ化していたが、PHPの場合は逆にcryptを使った方が強度は高いようだ。
ハッシュ化の目的は、サーバー上に保存したパスワードが万一漏洩しても、元のパスワードが知られないようにするためで、この場合復号する必要は無い。ハッシュ化されたパスワードと元のパスワードを照合して、ハッシュ化されたものが元のパスワードから生成されたものであることがわかりさえすればいい。
PHPでmd5()関数を使うと、ハッシュ値と呼ばれる32桁の16進数に変換される。
「abcd」とハッシュ化された文字列は1対1の対応で、「abcd」を何度md5でハッシュ化しても「e2fc714c4727ee9395f324cd2e7f331f」になる。
このハッシュ値から元の文字列を得る方法はない。つまり「e2fc714c4727ee9395f324cd2e7f331f」から元の「abcd」を得ることはできないということが、秘匿性を守る根拠になっている。
ところが、ハッシュ値のデータベースから元の値を得るモジュールなるものが存在するらしい。
ハッシュ化の目的は、サーバー上に保存したパスワードが万一漏洩しても、元のパスワードが知られないようにするためで、この場合復号する必要は無い。ハッシュ化されたパスワードと元のパスワードを照合して、ハッシュ化されたものが元のパスワードから生成されたものであることがわかりさえすればいい。
PHPでmd5()関数を使うと、ハッシュ値と呼ばれる32桁の16進数に変換される。
$str = 'abcd';実行結果
$md5 = md5($str);
echo $md5;
e2fc714c4727ee9395f324cd2e7f331fたとえば上記のように「abcd」という文字列をmd5でハッシュ化すると、「e2fc714c4727ee9395f324cd2e7f331f」という文字列が得られる。
「abcd」とハッシュ化された文字列は1対1の対応で、「abcd」を何度md5でハッシュ化しても「e2fc714c4727ee9395f324cd2e7f331f」になる。
このハッシュ値から元の文字列を得る方法はない。つまり「e2fc714c4727ee9395f324cd2e7f331f」から元の「abcd」を得ることはできないということが、秘匿性を守る根拠になっている。
ところが、ハッシュ値のデータベースから元の値を得るモジュールなるものが存在するらしい。
counter:6,309