PHPで利用しているセッション情報を、Perlスクリプトで利用できないか。試してみた
PHPのセッションファイルの例
key|s:16:"OQLxya7yvFhUjVDZ";user|s:8:"username";logontime|i:1219587745;
CGIのセッションファイルの例
$D = {'_SESSION_ID' => '6d581627e71050d2294a03bfa525c573','_SESSION_REMOTE_ADDR' => '192.168.1.1','_SESSION_CTIME' => 1219587859,'key' => 'PVhSizTnh3ns1Rr5','_SESSION_ATIME' => 1219587872,'user' => 'username','logontime' => 1219587872,'_SESSION_EXPIRE_LIST' => {}};;$D
セッションファイルのデータ形式が全く違う… が、Perlで無理やり読み込むスクリプトらしきものを作ってみる。 (セッション情報内に保存されている 「user」を読み出すスクリプトを作る)
#!/usr/bin/perl
use strict;
use CGI;
use CGI::Session;
use CGI::Session::Driver::file;
print "Content-type: text/html\n\n";
print "<html>\n<bodt>\n";
my $cgi=CGI->new;
# CGISESSID ではなく、 PHPSESSID のクッキーを用いる
my $sid=$cgi->cookie('PHPSESSID')||$cgi->param('PHPSESSID')||undef;
# セッションファイルの命名法を cgisess_0000... ではなく、 sess_0000... とする
$CGI::Session::Driver::file::FileName = "sess_%s";
# PHPのセッションファイル保存場所と同じディレクトリを用いる
my $session=CGI::Session->new(undef,$sid,{Directory=>'/var/tmp'});
# セッションからデータを読み込む
my $user = $session->param('user');
print $user;
$session->close();
このスクリプトでは、読み込めなかった…