[英]cgi sessions between two Perl scripts
我在我的网站上使用了两个Perl脚本。 我在侧面找到了一个搜索字段,该字段调用了第一个脚本,结果被写入输出文件中。 下次单击时,用户将调用第二个脚本,该脚本将读取输出文件并根据用户搜索来构建配置文件。 目前我只是在输出文件上写,但我需要使用会话ID来个性化此文件。
我正在使用CGI :: Session进行尝试,但是我不理解如何使用这两个Perl脚本来实现这一点。 我认为我需要比较会话ID,并为每个会话编写输出文件。
你们中的一个人知道如何做到吗?
第一个脚本:我将会话写入文件中:
my $session = new CGI::Session(undef, $cgi, {Directory=>"/usr/local/path/"});
然后将cookie发送给客户端:
my $cookie = $cgi->cookie(CGISESSID => $session->id );
第二个脚本:尝试获取会话ID:
$sid = $cgi->cookie("CGISESSID") || undef;
print $sid
Status: 500
。
您需要将会话ID传递给客户端,以便客户端在以后的请求中将其提供给您。 通常使用cookie完成此操作。
use utf8;
use open ':std', ':encoding(UTF-8)';
use CGI qw( -utf8 );
use CGI::Session qw( );
use constant SESSION_DIR => '...';
use constant SESSION_EXPIRE => '+12h'; # From last use (not creation)
my $cgi = CGI->new();
my $session = CGI::Session->new(
'driver:file',
scalar($cgi->cookie('session_id')),
{ Directory => SESSION_DIR },
);
$session->expire(SESSION_EXPIRE);
# Whatever your page does
my $count = $session->param('count');
++$count;
$session->param(count => $count);
my $content = "This is request $count";
print
$cgi->header(
-type => 'text/html',
-charset => 'UTF-8',
-cookie => $cgi->cookie(
-name => 'session_id',
-value => $session->id,
-expires => SESSION_EXPIRE,
),
),
$content;
这里只显示了一个脚本,但是显然没有什么可以阻止两个脚本访问同一会话(如果它们可以访问同一会话存储)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.