HTTP POST,GETパラメータを作成/解析する

http_build_query() で連想配列/配列から HTTP の GET/POST クエリ文字列を生成、parse_str() でHTTP の GET/POST クエリ文字列を解析(パース/パーズ)して連想配列にすることができます。
 
※GET/POSTクエリ文字列というのは key1=value1&key2=value2&… という形式の文字列を指します。
 
string http_build_query(array formdata [, string numeric_prefix])
void parse_str(string str [, array &arr])

gpg

警告: 剣呑なメモリーを使用しています! [security]:
gpg を使っていて上記のような警告がでていたので簡単に調べてみました。
 
gpg: 警告: 剣呑なメモリーを使用しています!(%!zt! diary)

「gpg: WARNING: using insecure memory!」というのはcp $(which gpg) .; ./gpgなどでrootにsetuidされていないgpgを使うと出てくるメッセージ。

ということで、次の処理で対処可能です。
 

# ll `which gpg`
-r-xr-xr-x 1 root wheel – 738740 4 6 12:46 /usr/local/bin/gpg*
# chmod u+s `which gpg`
# ll `which gpg`
-r-sr-xr-x 1 root wheel – 738740 4 6 12:46 /usr/local/bin/gpg*

オンラインで .tty ファイルを再生する

TTYPLAYER
 
[2006-04-11]に紹介した ttyplay の Java アプレット版(GPL License)です。
デモも見られますが、便利そうです。
 
追記:
(20060-07-06) 非公式ですが、サンプル付きの class ファイル, フォントファイルのセットをここに置いておきます。すぐ使いたい方はこれをダウンロードして、example.html を開いてみてください。
 
参考:
TTYPLAY で遊んでみる(rogue)

portupgrade での unknown build error 対策

portversion でバージョンが一致していないにもかかわらず次のエラーが出る場合の対策メモです(環境はFreeBSD4.x)。

 p5-MIME-Base64-3.07 is already installed
 You may wish to “make deinstal and install this port again
 by “make reinstall
to upgrade it properly.
 If you really wish to overwrite the old port of converters/p5-MIME-Base64
 without deleting it first, set the variable “FORCE_PKG_REGISTER”
 in your environment or the “make install” command line.
 
 *** Error code 1
 
Stop in /usr/ports/converters/p5-MIME-Base64.
 *** Error code 1

こういうエラーが出る都度

pkg_deinstall -f “パッケージ名_バージョン”
portinstall “portのパッケージパス”

とかずっとやっていたのですが、perl 回りで頻発していて、へき易してきたので
説明にある通り環境変数 “FORCE_PKG_REGISTER” をセットして ad-hoc に回避。
 

# vi /usr/local/etc/pkgtools.conf

module PkgConfig の下あたりに

ENV[‘FORCE_PKG_REGISTER’] = ‘yes’

を追加して再度 portupgrade でエラーが出なくなります。
 
原因については未確認ですが、他の環境で発生しないなら cpan スクリプトでインストールしたモジュールあたりが原因かなと推測してますが、どうなんでしょう。

基数変換

10進数を36進数(0 から Z まで36文字)に変換するという処理を書こうとしたら、ばっちりそのものが提供されてるんですね。
 
base_convert()
 

base_convert(“元にする値文字列”, $from_base, $to_base);

これを利用すると次のようになります。

echo base_convert(123, 10, 36); // 10進数123を 36進数にする
// 結果: 3f
echo base_convert(36, 10, 36);
// 結果: 10
echo base_convert(“10”, 36, 10); // 36進数 10 を 10進数にする
// 結果: 36
echo base_convert(“FF”, 16, 2); // 16進数 FF を 2 進数にする
// 結果: 100100

6.1 リリース

2006-05-08 にリリースアナウンスが出ていました。
安定性から 5.x はあんまり使おうという気になれなかったのですが、5.x から使えるようになった機能( gbde(4) など)も気になりますし、インストールしてみようかなぁと思案中です。
 
参考:
FreeBSD.org 本家
The FreeBSD Project(Japan)
FreeBSD 6.1-RELEASE登場(/.j)
 
ディスクパーティションの暗号化(FreeBSD.org)
gbde について。

Webサービス脆弱性検査ツール

Acunetix Web Vulnerability Scanner という有償製品が比較的高機能で使いやすそうです。
Hotscriptsから、フォーム入力なしでトライアル版がダウンロードできます。
 
トライアルは検査対象サイトが、Acunetix のテスト用サイトに限定されてしまうため、性能については試せませんが、使い勝手等は体感できます。

SERVER_NAME vs HTTP_HOST

$_SERVER[‘SERVER_NAME’] と $_SERVER[‘HTTP_HOST’] どっちを使うべきか。
 
SERVER_NAME Versus HTTP_HOST
 
結論から
– HTTP_HOST
単純に HTTP リクエストヘッダの host: そのままが格納される。省略されると空文字列になる。
– SERVER_NAME
HTTP リクエストヘッダで host: が指定されていれば、

htmlentities($_SERVER[‘HTTP_HOST’])

と等価になる。
host ヘッダが省略された場合はサーバデフォルト(Apache なら httpd.conf の ServerName)と等価になる。
 
とのことです。いずれにせよ、信頼できる値ではありませんね。
 
参考:
Chris Shiflett: SERVER_NAME Versus HTTP_HOST(blog.xole.net)