[PHP-users 27692] Re: [ok] Re: MySQLの場合のsession_handler.phpについて

fujisan fujisan @ lg.sunnyday.jp
2005年 11月 29日 (火) 22:19:44 JST


なかです。

経過報告です。

php.iniの
session.save_handlerの値を
filesからuserに変えることが
ロリポップではできないので、
まずはローカルで試してみることにしました。

MacOSX 10.3.9 + Apache 1.3.33 + PHP 4.3.11
です。

/private/etc/php.ini
をviでsession.save_handler=user
に変更しました。

ところが、今までロリポップで動いていた
ユーザーの新規登録用PHPで
値を入れているのに、
値を入れていない時のエラーが出てしまいました。
(つまり、入力した値が渡されない)

いろいろ調べたところ、
php.iniの
register_globals=Off
が原因らしいとわかり、
Onに変更したら、きちんと動くようになりました。

でも、これはOnの方がいいとphp.iniのコメントにも書いてありましたし、
http://d.hatena.ne.jp/keyword/register_globals
でもPHP4.2以降ではregister_globals=Offになったと解説してあり、
なるほどと思いました。

その後、
http://www.stackasterisk.jp/tech/php/php03_06.jsp
のサンプルプログラム session_handler.phpを
MySQL用に修正したものを
きちんとタイムスタンプがrdateに登録されるようにするにはどうしたらよいか
調べたところ、MySQLの場合は、rdateの値を入れなければrdateに現在の時刻が
登録されることがわかり、
rdateへの入力箇所を削除し、phpMyAdminでrdateを確認したところ、
それまでは、14桁の0だったのが、20051129221020 というように時刻などが入
るようになりました。

ただ、session_handler.phpの中の

// 不要なセッションを何日残しておくか?
define(S_GC_DAYS, "30");

(中略)

$sql  = "delete from session where " . S_RDATE_FIELDNAME;
$sql .= " < ('now'::timestamp + '-".S_GC_DAYS." day')";

となっている'now'::timestampの部分をどう直すかがよくわかりません。

どなたかご教授いただけると助かります。


--
なか






PHP-users メーリングリストの案内