Schrift
[thread]231[/thread]

CGI::Session in Verbindung mit MySQL (Seite 2)



<< |< 1 2 >| >> 18 Einträge, 2 Seiten
esskar
 2006-08-22 09:20
#2067 #2067
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ist ja jetzt alles schon 2 jahre her :)
Tom
 2006-08-22 20:18
#2068 #2068
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=MartinR,21.08.2006, 22:32]Als Standard soll die MySQL-Tabelle 'a_sessions'. Du hast aber hier eine andere Tabelle erzeugt, oder?[/quote]
Nein, habe diesen Code genommen.

Code: (dl )
1
2
3
4
    CREATE TABLE sessions (
id CHAR(32) NOT NULL PRIMARY KEY,
a_session TEXT NOT NULL
);


Kannst du mir vielleicht mal ein Codebeispiel geben dass bei Dir funktioniert?

Quote
ist ja jetzt alles schon 2 jahre her


Ich habe das Problem aber erst seit gestern ;)

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
MartinR
 2006-08-22 21:30
#2069 #2069
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
[quote=Tom,22.08.2006, 18:18]Nein, habe diesen Code genommen.[/quote]
Du hast Dein Posting editiert, richtig? Ich könne schwören, dass Deine Tabelle 'yn_sessions' hieß. In meinem Posting war übrigens auch ein Fehler drin. Nicht die Tabelle heißt a_sessions sondern die Spalte in der Tabelle sessions.

Hast Du dieses Tutorial schon durch?
Tom
 2006-08-22 21:42
#2070 #2070
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=MartinR,22.08.2006, 19:30]Du hast Dein Posting editiert, richtig?[/quote]
Nein, habe es nach deinem Post nicht editiert, siehst du ja am Datum unterm Posting.

Quote
Hast Du dieses Tutorial schon durch?


Ja, aber da steht ja nicht viel zu dem Driver MySQL drin.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
MartinR
 2006-08-22 22:07
#2071 #2071
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Stimmt, ich hab ja gleich bis zu esskars posting vor 2 Jahren hochgescrollt.

Du kannst übrigens $cgi->header durch $session->header ersetzen. Dann kannst Du Dir auch die seperate Abfrage der SessionID und das Cookiemanagement ersparen.

Mehr Infos natürlich auch hier ...

CPAN:CGI::Session::Driver::DBI
CPAN:CGI::Session::Driver::mysql
Tom
 2006-08-24 20:49
#2072 #2072
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Jetzt bekomme ich diese Fehlermeldung

Quote
[Thu Aug 24 18:48:52 2006] session.cgi: (in cleanup) Can't connect to data source , no database driver specified and DBI_DSN env var not set at module/CGI/Session/Driver/DBI.pm line 23 [Thu Aug 24 18:48:52 2006] session.cgi: (in cleanup) Can't call method "commit" on unblessed reference at module/CGI/Session/Driver/DBI.pm line 127 during global destruction.


Mein Code

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
use CGI::Carp "fatalsToBrowser";
use CGI qw(:all);
use warnings;
use DBI;
use lib './module';
use strict;
use CGI::Session;
use vars qw($dbms $dbname $dbuser $dbpasswd $session $sid $dbh $lg_name);

require "data/dbinfo.cgi";

my $cgi = new CGI;
my $dbh = DBI->connect( "$dbms:$dbname","$dbuser","$dbpasswd", {PrintError => 0, RaiseError => 1}) || die
"Verbindung zur Datenbank fehlgeschlagen: $DBI::errstr";



$sid = $cgi->cookie('YAMBE_SESSID') || $cgi->param('YAMBE_SESSID') || undef;
$session = new CGI::Session("driver:mysql", $sid, {Handle=>$dbh});

$session->expire('3');
$session->param("USER", $lg_name || 'gast');
my $cookie = $cgi->cookie(YAMBE_SESSID => $session->id );
print $cgi->header(-cookie=>$cookie);


Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
MartinR
 2006-08-24 21:47
#2073 #2073
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
Na dann halt mal ein Beispiel das bei mir funktioniert:

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
#!/usr/bin/perl

use strict;
use warnings;

my $username = 'xx';
my $passwort = 'xx';
my $tabelle  = '_test';

use CGI;
my $cgi = new CGI;

use CGI::Session;
my $session = new CGI::Session( "driver:mysql", undef,
{
DataSource  => "dbi:mysql:$tabelle",
User        => $username,
Password    => $passwort
}
);

$session->param('dummy', time);

print $session->header();
print $cgi->start_html();
print $cgi->a( {href=>$cgi->self_url}, 'nochmal');
print $cgi->p("Zeit: ".$session->param('dummy'));
print $cgi->end_html();


Die MySQL-Datenbank heißt: '_test'
Die Tabelle in der Datenbank wurde erstellt mit:

Code: (dl )
1
2
3
4
CREATE TABLE sessions (
       id CHAR(32) NOT NULL PRIMARY KEY,
       a_session TEXT NOT NULL
   );
Tom
 2006-08-25 18:44
#2074 #2074
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke MartinR, konnte damit meinen Fehler finden, und zwar habe ich immer folgendes verwendet.

Code: (dl )
$session = new CGI::Session("driver:mysql", $sid, {Handle=>$dbh})


Und da hatte vermutlich immer das $session einen Konfilkt mit den Modulen verursacht, denn wenn ich "my $session" schreibe funktioniert es.

Tom\n\n

<!--EDIT|Tom|1156517211-->
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2004-04-11 18:13.