登录和会话的注销2个CGI脚本(login and logout of sessions in 2

2019-09-18 01:06发布

我需要存储一个登录会话,当用户登录,当用户退出的系统或会话超时已经删除登录会话。 我编码在Perl。 我知道我可以在Perl中使用CGI ::会话模块,但我怎么确保该会议是由1个CGI脚本创建,由另一个CGI脚本中删除。 然后,该系统的所有其他网页必须检查是否存在会话,才能显示其内容。

目前,我使用下面的代码,当用户成功登录到创建一个新的会话。

my $session = CGI::Session->new();
my $CGISESSID = $session->id();

但是,我怎么注销用户在另一个CGI脚本会话的? 我怀疑我可以用下面的,因为$ session中没有在其他CGI脚本定义

$session->delete();
$session->flush();

有任何想法吗?

Answer 1:

CGI ::会议在默认情况下是独立的脚本。 所以,你应该能够做到这一点。

只是不要忘记坚持以某种方式在客户端的会话ID。 它可以用浏览器来完成,见会议header()的例子。 ID和会话对象将被自动检索(如果保存正确)。

CGI::Session new()

如果调用时没有任何参数,$ DSN默认的驱动程序:文件;串行:默认; ID:MD5

CGI::Session::Driver::file

你可以将它们配置为使用你喜欢的商店和设置。


使用基本的会话例如 CGI脚本:

#!/usr/bin/perl
use strict;
use warnings;

use CGI;
use CGI::Carp qw(fatalsToBrowser); # show errors in browser
use CGI::Session;


# new query object
my $q = CGI->new();

# new session object, will get session ID from the query object
# will restore any existing session with the session ID in the query object
my $s = CGI::Session->new($q);


# print the HTTP header and set the session ID cookie
print $s->header();


# print some info

print "<pre>\n";

print "Hello!\n\n";
printf "Your session ID is: %s\n", $s->id;
printf "This sessin is: %s\n", $s->is_new ? 'NEW': 'old';
printf "Stored session 'test' value: '%s'\n", $q->escapeHTML($s->param('test'));
printf "CGI Params: %s\n", join ', ', $q->param;


# handle the form submit

if(defined $q->param('save')){
    # save param value in the session
    $s->param('test', $q->param('test'));
    printf "Set session value: '%s'\n", $q->escapeHTML($s->param('test'));
}
elsif(defined $q->param('delete')){
    # delete session
    $s->delete;
    print "Session will be deleted.\n";
}

print "\n</pre>\n";


# simple HTML form

printf <<'_HTML_', $q->escapeHTML($s->param('test'));
<hr/>
<form>
Session value "test": <input type="text" value="%s" name="test"/>
<button type="submit" name="save">Save Value</button>
<button type="submit" name="delete">Delete session</button>
</form>
_HTML_

# eof (linebreak needed after _HTML_)


文章来源: login and logout of sessions in 2 cgi scripts