SSL、ダウンロード、session・・・

2008/06/05 | PHPの基本

とある案件でSSLを使用した。SSL環境下で、PHPを使ったファイルのダウンロードに関しては注意すべき点がある(以前PDF出力のところで少し触れた)。IEには潜在的にバグがあって、PHPを使ったSSL環境下でのファイルダウンロードがうまくできないことがあるのだ。特にセッションを使っている場合は注意が必要で、session_start関数を呼び出す前に、やっておかないといけないことがある。

session_cache_limiter(‘public’);
session_start();

上記のように一つ関数をかませるか、ダウンロード時に以下のようにヘッダを出力してやる。

header(“Cache-Control: public”);
header(“Pragma: public”);

多分、これで大丈夫。IE7でも治ってなかった。きっとMicrosoftいわく「バグじゃねえよ、仕様だよ」ってことなんだろうな。

最近のphpMyAdminの設置

2008/06/04 | PHPの基本

MySQLデータベースを操作するためのツールは、現状デファクトスタンダードといってもいいのがphpMyAdmin。現時点での最新バージョンは2.11.6だ。最近は備え付けのところが多いのだが、いざ自分で設置するとなると、昔のバージョンとは少し設定方法が違ってたりしてとまどうことがある。今回設置の際にドキュメントを少し読んだので設置方法をメモしておく。

(1)ファイルをダウンロードして解凍
(2)config.sample.inc.phpをconfig.inc.phpにリネームして編集
(3)編集した箇所はここ
 17行目付近(ここに適当な文字列20文字くらいを入れる)
 $cfg[‘blowfish_secret’] = ”
 28行目付近(接続用のIDとパスワードを入れる)
 $cfg[‘Servers’][$i][‘user’]= ‘root';
 $cfg[‘Servers’][$i][‘password’]= ‘cbb74bc';

上記でOK。これでパスワードを都度聞かれることはない。userとpasswordを設定しなければアクセスした際に入力を求められるので有効なuser/passwordを入力すればよい。

ちなみに専用サーバなどではたいていrootの初期パスワードがブランクに設定されているので、何も設定しなくてもアップロードするだけで使えるようになってしまう。セキュリティに配慮するために、rootパスワードを設定しておいたほうがいいだろう。もちろん上記のようにuser/passwordを指定するなら、別の認証を加える必要があることは言うまでもないことだけど。

mail関数とエラーメール

2008/06/03 | PHPの基本

PHPからはmail関数やmb_send_mail関数を使えば、簡単にメールを送信することができる。しかし、そもそもこれらの関数だけで、RFCに沿った日本語メールを送信することはできない(らしい)。「RFCに厳密に沿って」作るのが一番いいのは間違いないが面倒なので、mb_send_mail関数を使う際のオプション類についてメモしておく。
mb_send_mail関数は標準で引数3つ、オプションであと2つの引数、合計5つの引数をとることができる。標準の3つの引数はメール送信時には必須の「宛先メールアドレス」「タイトル」「本文」。残りの2つのオプションが重要だ。

第4引数:メールの追加ヘッダ
ここで指定した文字列をメールのヘッダとして追加してくれる。標準の3つの引数だけでメールを送信すると、到着メールの送信者欄が「apache@example.net」みたいになってしまうので、以下のように設定すればよい(行末は改行で複数行のヘッダを指定できる)。
“From: hoge@example.net¥r¥n”

第5引数:MTAへのオプション指定
上記で送信者メールアドレスを指定することはできる。しかし宛先メールアドレスが間違っているなどの場合には、残念ながら上記で設定したFromメールアドレスにエラーメールは返ってこない。エラーメールはFromヘッダには返されないことがほとんどなのだ。ではどういったヘッダを加えるかということになるが、メールソフトなどで受信したメールのヘッダを覗いてみるといい。Return-Pathというヘッダがあるはずだ。実はこのヘッダのメールアドレス宛にエラーメールが返されている(ようだ)。では「Return-Pathを第4引数に」と思うのだが、実は早計で、Return-Pathは特別なヘッダなのだ。
では、どうするか。それを解決するのが第5引数だ。第5引数に以下のように与えればよい。
“-f hoge@example.net”
第5引数はMTA(メールサーバソフト)に、メール送信時のオプション指定をするためのもので、そこで指定するのが正しい。これでエラーメールが届く(確率が上がる)。

実はエラーメールの配送は、自分のサーバや相手先サーバの使用に依存することが多いので上記の設定でもエラーを拾うことができない場合が多々あると思われる。そんな場合は・・・都度原因を追うしかないだろうな。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net