PHPでipがローカルかどうか調べる

filter_varでいろいろな条件を調べられる。メールアドレスとかドメインとか、あるいはboolとして1や”yes”,”on”なども調べられる。

この関数ではまずIPアドレスかどうかを調べて、つぎにそれがプライベートか予約されたアドレスかどうかの条件を追加して調べている。

FILTER_FLAG_NO_PRIV_RANGEを指定すると、プライベートでないものはfalseを返す。マニュアルによると以下。

Fails validation for the following private IPv4 ranges: 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16.

Fails validation for the IPv6 addresses starting with FD or FC.

FILTER_FLAG_NO_RES_RANGEを指定すると、予約されたアドレスでない場合はfalseを返す。マニュアル以下。

Fails validation for the following reserved IPv4 ranges: 0.0.0.0/8, 169.254.0.0/16, 127.0.0.0/8 and 240.0.0.0/4.

Fails validation for the following reserved IPv6 ranges: ::1/128, ::/128, ::ffff:0:0/96 and fe80::/10.

フィルタの一覧
http://php.net/manual/en/filter.filters.validate.php

フラグの一覧
http://php.net/manual/en/filter.filters.flags.php

Ubuntuのapache2でmcryptを有効にする

インストール

有効化

デフォルトだとapache2では有効にならないようなので以下のように有効化する。

apache2の再起動

phpinfo()で有効化しているかを確認

cronでphpを動かすとNo entry for terminal type “unknown”;とか表示される

cronが動くときTERM=unknowに設定されているみたいで、phpによって表示される。のでTERMに何も設定しないかxtermを設定すれば出なくなる。

crontab -eのエントリの例

phpで処理にかかった時間を調べる

PHPやjavascriptで処理にかかった時間を計算する。
PHPの場合、まずいかの関数を用意する。これはpukiwikiからコピーした。

microtime関数は、現在時刻をスペースで区切ったミリセカンドと、秒で返します。
explodeでスペースで区切った配列に変換し、それをlistで受けます。
listは右辺に配列をおいて代入できるPHP言語の組み込み機能です。

時間を測定したい処理の前に以下のようにSTART_MICROTIMEを定義します。

defineは定数を定義できます。一度定義すると変更できないので便利です。

処理が終わったところで以下のようにして時間を計ります。

書式文字’01.03f’は、以下のように解釈します
0 : 0で埋める。
1 : 最低1桁を表示する。
. : 浮動小数点の区切り
0 : 0で埋める。
3 : 3桁以上は切り捨て。小数点以下は前とは別解釈になる。