Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7046[/thread]

Problem mit Apache::Session::MySQL: MD5 stirbt



<< >> 8 Einträge, 1 Seite
Gast Gast
 2005-06-14 00:10
#55454 #55454
Hallo!

Ich bin dabei mir ein Sessionmanagement System zu Programmieren.

Dazu habe ich bereits eine Tabelle sessions mit den Feldern id, length, a_session angelegt.

Es ist auch kein Problem neue Sesions zu erzeugen.

Nur wenn ich eine bestehende Session aufgrei stirbt das Generate MD5 ab.

Mein Session-Modul:
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
package Sessions;
use Apache::Session::MySQL;
use db_lib;
my %session;

my ($dbh);
my $db = "usrdb_help_projekt_1";
$dbh=connect_db($db) or die 'cant connect';
sub get_session{
my $session_id=shift;
$session_id =~ s/ //g;
tie %session, 'Apache::Session::MySQL', $session_id, {
Handle => $dbh,
LockHandle => $dbh
};
$session{first_name} = "Chuck";
return %session;
}

sub new_session{
tie %session, 'Apache::Session::MySQL', undef, {
Handle => $dbh,
LockHandle => $dbh
};
$session{first_name} = "Csdf";
return %session;
}


Aufrufen tue ich es über eine Mason Komponente
Code: (dl )
1
2
3
4
5
6
% my %test;
% if(exists $ARGS{session_id}){
% %test=Sessions->get_session($ARGS{session_id});
%} else {
% %test=Sessions->new_session;
%}


Also jenachdem was man übergeben bekommt, wir eine neue Session erzeigt, oder die bestehende Übernommen(also das soll es eigentlich machen...)

Einbinden tue ich das mOdul wie gewohn mit

Code: (dl )
use Session;


Anschauen kann man das ganze unter http://devel.help-projekt.de


Kann mir jemand weiterhelfen?
Danke
SubScrew
 2005-06-14 00:34
#55455 #55455
User since
2005-06-14
10 Artikel
BenutzerIn
[default_avatar]
Sorry, den Test findet ihr unter http://devel.help-projekt.de/kontakt.m
unten steht was wie
id->
dann ein Link hallo, der eine evtl. Session_id enthäl
GwenDragon
 2005-06-14 12:28
#55456 #55456
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Quote
Aufrufen tue ich es über eine Mason Komponente
Code: (dl )
1
2
3
4
5
6
% my %test;
% if(exists $ARGS{session_id}){
% %test=Sessions->get_session($ARGS{session_id});
%} else {
% %test=Sessions->new_session;
%}

Wenn schon
Code: (dl )
% if(exists $ARGS{session_id} && length( $ARGS{session_id} )&& $ARGS{session_id} =~ /[a-z0-9]+/ ) { 

Sonst existiert zwar der Hash, dafür aber kein gültiger Eintrag.

Quote
System error
error: Can't locate object method "get_session" via package "Sessions" at /var/www/devel.help-projekt.de/htdocs/autohandler line 140.

context:
...
135:
136: <!-- Title: Help-Projekt.de - Tutorials, PC-Forum, Programmierung, Mason -->
137:
138: <!-- URL: http://www.help-projekt.de -->
139: % my %test;
140: % if(exists $ARGS{session_id}){
141: % %test=Sessions->get_session($ARGS{session_id});
142: %} else {
143: % %test=Sessions->new_session;
...
code stack: /var/www/devel.help-projekt.de/htdocs/autohandler:139


Zudem scheinst du das Modul nicht beim ersten Aufruf ein zu binden. Denn dann meckert Mason an, dass get_session fehlt!
War bei mir so.\n\n

<!--EDIT|GwenDragon|1118738922-->
GwenDragon
 2005-06-14 12:46
#55457 #55457
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Weitere Fehlermeldungen beim ersten Aufruf:
Quote
error: Object does not exist in the data store at /usr/local/share/perl/5.8.4/Apache/Session/Store/DBI.pm line 93.

context:
...
89:
90: my $results = $self->{materialize_sth}->fetchrow_arrayref;
91:
92: if (!(defined $results)) {
93: die "Object does not exist in the data store";
94: }
95:
96: $self->{materialize_sth}->finish;
97:
...
code stack: /usr/local/share/perl/5.8.4/Apache/Session/Store/DBI.pm:93
/usr/local/share/perl/5.8.4/Apache/Session.pm:496
/usr/local/share/perl/5.8.4/Apache/Session.pm:407
/var/www/devel.help-projekt.de/htdocs//Sessions.pm:12
/var/www/devel.help-projekt.de/htdocs/autohandler:139
SubScrew
 2005-06-14 13:43
#55458 #55458
User since
2005-06-14
10 Artikel
BenutzerIn
[default_avatar]
Hallo!

Eigentlich lade ich das modul im autohandler wie folgt:

Code: (dl )
1
2
3
<%init>
use Sessions;
</%init>


Muss ich das Modul woanders Laden?

Ich habe den Code wie von dir Vorgeschlagen geändert, das Problem besteht jedoch weiterhin.

Übergebe ich die Session_id vielleicht verkehrt meinem Session.pm Modul?
SubScrew
 2005-06-14 14:10
#55459 #55459
User since
2005-06-14
10 Artikel
BenutzerIn
[default_avatar]
Hi!

Hier mal der Inhalt in der Tabelle Sessions:

id->d3e982aeb910f491
legth->NULL
a_session->
d3e982aeb910f4915cb90d8638670e79 _session_id

Mir ist aufgefallen, dass die Session Id die ich übergebe, viel Länger ist, als die ID in der Datenbank...
GwenDragon
 2005-06-15 11:44
#55460 #55460
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
So jetzt frage ich mal genauer nach:

1. Welche Perl-Version?
2. Welche Version von Apache::Session?
3. mod_perl?
4. Version von HTML::Mason?
5. Läuft Mason als
5.1 CGI
5.2 mod_perl
6. Apache-Version

Damit ich mal den Überblick bekomme
Danke\n\n

<!--EDIT|GwenDragon|1118821604-->
SubScrew
 2005-06-15 12:04
#55461 #55461
User since
2005-06-14
10 Artikel
BenutzerIn
[default_avatar]
Hallo!

Ich verwende:
Apache::Session neueste Version vom CPAN
Apache 1.33
mod_perl standard über apt-get
mason, stadard über apt-get 1.1x denke ich
MasonXWithApacheSession 0.3
Perl 5.8

Ich verwende jetzt nicht mehr Apache::Session direkt, sondern das MasonXWithApacheSession, dass aber alles weiter nach Apache:Session leitet.

Dort habe ich nur das Problem, dass mit jedem Aufruf der Seite ein neues Cokkie im /tmp/ des Servers gespeichert wird, und nicht mit delete_session gelöscht wird..

Ne Idee?
<< >> 8 Einträge, 1 Seite



View all threads created 2005-06-14 00:10.