Schrift
[thread]231[/thread]

CGI::Session in Verbindung mit MySQL



<< |< 1 2 >| >> 18 Einträge, 2 Seiten
esskar
 2004-04-11 18:13
#2057 #2057
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hi.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub session_create
{
  my ($obj, $dbh, $userid) = @_;
  my $mydbh = $dbh;

  unless($mydbh) { $mydbh = &libyn::DB::connect_to_db($obj); }

  $CGI::Session::MySQL::TABLE_NAME = $libyn::Config::DbTables{sessions};
  my $session =  CGI::Session->new("driver:MySQL", $obj->{-cgi}, { Handle => $mydbh }) or die "CGI::Session->new failed.";
  $session->name('sessionId');
  $session->expire('+1h');
  $session->param('userId', $userid);

  unless($dbh) { $mydbh->disconnect(); }

  return $session;
}


Irgendwie kommt kein Fehler; in der Tabelle in der Datenbank steht aber auch nix drin!

Die Tabelle in der DB hat folgende Struktur
Code: (dl )
1
2
3
4
5
6
CREATE TABLE yn_sessions (
 id varchar(32) NOT NULL default '',
 a_session text NOT NULL,
 userId bigint(20) default NULL,
 UNIQUE KEY id (id)
) TYPE=MyISAM;


Laut Doku müsste id vom Typ CHAR sein; hab sie auch als CHAR angelegt und später auch versucht auf CHAR umzustellen; jedoch ohne Erfolg
pktm
 2004-04-11 21:54
#2058 #2058
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
MySQL-Doku:
Quote
Die Werte, die aus den CHAR(4)- und VARCHAR(4)-Spalten abgerufen werden, sind in jedem Fall gleich, weil Leerzeichen am Ende von CHAR-Spalten beim Abruf entfernt werden.
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2004-04-12 00:49
#2059 #2059
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hat das jemand mal gemacht? also CGI::Session in Verbindung mit MySQL ?
esskar
 2004-04-12 00:52
#2060 #2060
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
so geht es übrigens
Code: (dl )
my $session =  CGI::Session->new(undef, $obj->{-cgi}, { Directory => 'data/sessions' }) or die "CGI::Session->new failed.";

Will aber keine Files!
pktm
 2004-04-12 01:25
#2061 #2061
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Datenbank-Session habe ich jetzt nicht zum laufen gebracht.
Obwohl alle Treiber (meines Wissens nach) installiert sind und ich die Session wie gefordert und mit Gültigen Übergabewerten ($dbh, $cgi) gefüttert habe bekomme ich unmengen Fehler von wegen es würden Methoden in CGI::Session fehlen, oder es würde so aussehen, als wäre driver:MySQL kein gültiger Treiber für die Session (vgl. CGI::Session::MySQL ...).
Also ich für meinen Teil bleibe erstmal bei Files, angeblich kann man ja durch einfaches umstellen des Treibers später noch problemlos wechseln - Mal sehen.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2004-04-12 18:19
#2062 #2062
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich hab mich ein wenig wegen dem nicht funktionieren mit Mysql geärgert; hab jetzt selber was gestrickt; brauch eh nicht soviele session informationen
pfuschi
 2004-04-13 12:34
#2063 #2063
User since
2004-03-31
198 Artikel
BenutzerIn
[default_avatar]
Servus,
hab das jetzt erst gesehen. Vorne weg, ich hab CGI::Session via mysql schon benutzt, erfoglreich *G*

Also hier änderst du den Namen der Tabelel ab, sicher dass es auch funktioniert?
Code (perl): (dl )
$CGI::Session::MySQL::TABLE_NAME = $libyn::Config::DbTables{sessions};


Ich würde an deiner stelle das Script erstaml mit den standard Einstellungen aufsetzen um zusätzliche Fehlerquellen auszuschließen und dann später dinge wie TABLE_NAME ändern, oder aber ein separates test Script aufsetzen wo du alles kurz hardcodest und mit deiener DB checskt.
Vielelicht stimmt ja was mit den berechtigungen in der DB nicht, hm , dann würde aber eine Fehler emldung kommen...

Du hast bei erzeugen des DB Handlers PrintErrors angeschaltet?

greetz & fetten Segen
manu
PCE - Editor für Perl in Perl
Bookzilla.de - Mit jedem Kauf OpenSource unterstützen
"I know I can't hold the hate inside my mind
cause what consumes your thoughts controls your life"
- Creed
esskar
 2004-04-13 13:36
#2064 #2064
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
PrintErrors? Nein hab ich nicht!
Danke!
Tom
 2006-08-21 21:31
#2065 #2065
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich versuche gerade auch CGI::SESSION in Verbindung mit MYSQL zu benutzen, bekomme das aber auch nicht hin, hat das jetzt jemand realisiert?

Hier 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
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 "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);


Und hier die Fehlermeldung

Quote
[Mon Aug 21 19:29:28 2006] session.cgi: Use of uninitialized value in numeric eq (==) at C:/Perl/site/lib/CGI/Session/MySQL.pm line 35 during global destruction. [Mon Aug 21 19:29:28 2006] session.cgi: Use of uninitialized value in concatenation (.) or string at C:/Perl/site/lib/CGI/Session/MySQL.pm line 36 during global destruction. [Mon Aug 21 19:29:28 2006] session.cgi: (in cleanup) could not flush: Couldn't acquire lock on id '9065907de0cbdcd1fd81dd7b20c7cc84'. Lock status: at ...\cgi-bin\yambe\data\session.cgi line 0


Tom\n\n

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

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
MartinR
 2006-08-22 00:32
#2066 #2066
User since
2004-06-17
305 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,11.04.2004, 22:49]hat das jemand mal gemacht? also CGI::Session in Verbindung mit MySQL ?[/quote]
Hi, also ich mach das schon öfters.

Als Standard soll die MySQL-Tabelle 'a_sessions'. Du hast aber hier eine andere Tabelle erzeugt, oder?

Du kannst aber auch so Deinen eigenen Tabellennamen verwenden (siehe auch weiter oben im thread):
Code: (dl )
$CGI::Session::MySQL::TABLE_NAME = 'yn_sessions';


Normalerweise also so:

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


Entnommen hier CGI::Session::Driver::DBI

Ich habe dann immer noch eine last_edit-Spalte (timestamp) selbst eingefügt, um abgelaufene Sitzungen leichter löschen zu können.
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



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