[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 メーリングリストの案内