且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在2个cgi脚本中登录和注销会话

更新时间:2023-11-13 21:23:58

CGI :: Session默认情况下独立于脚本.因此,您应该能够做到这一点.

CGI::Sessions are independent of script by default. So you should be able to do just that.

请不要忘记以某种方式将会话ID保留在客户端上.可以使用Cookie来完成,请参见会话 header() . ID和会话对象将自动检索(如果保存正确).

Just don't forget to persist the session ID on the client in some way. It can be done with a cookie, see session header() for example. The ID and the session object will be retrieved automatically (if saved properly).

请参见

如果不带任何参数调用,则$ dsn默认为driver:file; serializer:default; id:md5

If called without any arguments, $dsn defaults to driver:file;serializer:default;id:md5

CGI::Session::Driver::file .

您可以配置它们以使用您喜欢的存储和设置.

You can configure them to use the store and settings that you prefer.

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

Basic example CGI script using sessions:

#!/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_)