Schrift
[thread]594[/thread]

Problem mit CGI::Session: mit MySQL Als Session Backend

Leser: 1


<< >> 3 Einträge, 1 Seite
format_c
 2005-10-13 21:30
#5834 #5834
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hi,
ich bastele gerade an meinem LDAP Adressbuch Manager über Web.
Ich habe ein hauptscript für den eigentlich monotonen Programmablauf und ein Modul das die eigentliche Arbeit macht.
Allerdings habe ich ein Problem mit CGI::Session im hauptprogramm denn das Hauptprogramm übernimmt auch das Session Handling.

Ich bin noch nicht mit CGI::Session so fit. Habe einen Test ohne MySQL als Backend gemacht bekomme jetzt jedoch eine komische Fehlermeldung...
Hier erst mal mein Hauptprogramm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/perl
use strict;
use warnings;
use lib qw(../adbook/);
use CGI;
use DBI;
use CGI::Session;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use MyAdBookManager;
use HTML::Template;

# Benötigte Variablen initialisieren und definieren
my $session_dsn = "dbi:mysql:database=adbook_sessions;host=localhost;",
my $session_user = "xxxxxxxxxxxxxx";
my $session_pass = "xxxxxxxxxxxxxx";
my $sid = "SID";

# Benötigte Objekte erstellen
my $dbh = DBI->connect($session_dsn,$session_user,$session_pass,{PrintError=>0,RaiseError=>0})
or die DBI::errstr();

my $adbook = MyAdBookManager->new();
my $session = CGI::Session->load();

# Session verlängern falls noch nicht abgelaufen
unless ($session->is_expired()) { # Session abgelaufen oder existiert nicht
$session->new("driver:MySQL",$sid,{Handle=>$dbh});
$session->expire("+30m");# should be 3m for debugging and testing
}

my $userdn = $session->param("userdn") || CGI::param("userdn") || '';
my $passwd = $session->param("passwd") || CGI::param("passwd") || '';
my $authdn = $adbook->Auth($userdn,$passwd);

if (lc($authdn) eq lc($userdn)) {
# Wenn LDAP Authentifizierung erfolgreich Credentials in Session speichern ...
$session->param("userdn",$userdn);
$session->param("passwd",$passwd);
# ... und gewünschte Aktion vornehmen
$adbook->doAction(CGI::param("action") || '',CGI::Vars());
}
else {
# Ansonsten Login vorbereiten
$adbook->doAction("show_logon");
}

# Passendes Template laden und mit den passenden Werten ausfüllen
my $tmpl = HTML::Template->new(filename=>$adbook->requiredTemplate(),associate=>$session) or die $!;
for my $param ($adbook->Fields()) {
$tmpl->param(%$param);
}

# Und Bereit zur Ausgabe
print $session->header();
warningsToBrowser(1); # only for debugging
print $tmpl->output();
exit;


Ich bekomme beim Ausführen folgende Fehlermeldung:
Code: (dl )
Can't locate auto/CGI/Session/load.al in @INC (@INC contains: ../adbook/ /etc/perl /usr/lib/perl5/site_perl/5.8.6/i686-linux /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.5/i686-linux /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.6/i686-linux /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.5/i686-linux /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.6/i686-linux /usr/lib/perl5/5.8.6 /usr/local/lib/site_perl .) at adbookmanager.pl line 24


Weis jemand was das heißt?
Hier ist nochmal das sehr rudimentäre Übungsscript an dem ich etwas versucht habe mit CGI::Session umzugehen.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/perl
use strict;
use warnings;
use CGI::Session;
use CGI;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use HTML::Template;
my $session = CGI::Session->load();
$session->new("SID") unless $session->is_expired();
my $template = '../login.html';

$session->expire("+3m");
CGI::param("user") and $session->param("user",CGI::param("user"));
$session->param("~is_logged_in",1) if CGI::param("user") ne "" && CGI::param("pass") ne "";
if ($session->param("~is_logged_in")) {
$template="../success.html";
}
else {
$session->delete();
}

my $tmpl = HTML::Template->new(filename => $template,associate=>$session) or die $!;
print $session->header();
warningsToBrowser(1);
print $tmpl->output();
exit;

Ich sehe den Fehler irgendwie nicht.

Gruß Alex
format_c
 2005-10-14 04:30
#5835 #5835
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ah habs. So halb. Es scheint an CGI::Session::MySQL zu liegen. Wenn ich CGI::Session nochmal installiere funktioniert es wie vorher auf Dateiebene.
Naja arbeite erst mal so weiter.

Gruss Alex
pktm
 2005-10-14 14:52
#5836 #5836
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ich habe neuerdings auch Probleme mit CGI::Session & MySQL.
Vielleicht ist es vom Datum abhängig? (kleiner schlechter Witz)

EDIT: kennst du schon CGI::Application?\n\n

<!--EDIT|pktm|1129287257-->
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 3 Einträge, 1 Seite



View all threads created 2005-10-13 21:30.