Thread Session für OnlineGame validieren: mit RegEx :) (4 answers)
Opened by pktm at 2003-10-23 23:41

pktm
 2003-11-04 02:16
#67165 #67165
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!
Ich habe mal ein bischen rumgefriemelt und bin fast fertig.
Im Moment sieht es so aus:
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
#!/usr/bin/perl -w
use strict;
use constant SESSION_TIME => 60000;
# my $session = ($uid * $uniq) * 7 . 'XY' . time() . 'XY' . $uniq . 'XY' . rand(1) . 'XY' . $uid;
my $session = "2.09799194335938e+015XY1067904570XY299713134765625XY0.469451904296875XY1";

my $time = 1067904570;
my $uniq = 2147483647;
my $rand = 0.469451904296875;
my $uid = 1;

my $rec_key = (split/XY/, $session)[0];
my $rec_time = (split/XY/, $session)[1];
my $rec_uniq = (split/XY/, $session)[2];
my $rec_rand = (split/XY/, $session)[3];
my $rec_uid = (split/XY/, $session)[4];

my $zwischen = $rec_uid * $rec_uniq * 7;

print "$session\n";
my $session_pattern = '.*XY\d{10}XY\d{15}XY\d{1}\.\d{14,15}XY.*';
if( $session =~ m/$session_pattern/ ){ #Muster ok?
print "ok1\n";
if( (split /XY/, $session)[1] > time() - SESSION_TIME ){ #gültig? (Zeit)
print "ok2\n";
if( (split/XY/, $session)[4] * (split/XY/, $session)[2] * 7 eq (split/XY/, $session)[0] ){ #valid? (user)
print "ok3\n"; #eq, da auch \D vorkommen können (+|e|.)
}
}
}


Das Problem ist nur, dass die Session bei dem Teil, wo ich eine Zufallszahl übergebe die mit rand(1) generiert wurde auch etwas anders aussehen kann.
So z.B.
Quote
3.22549438476563e+015XY1067904937XY460784912109375XY0.76336669921875XY1

Da ist die Zufallszahl um eine Stelle kürzer.
Wie überprüfe ich denn nun darauf, ob die Zufallszahl 14 oder 15 Stellen lang ist?
Ich dachte, das würde mti dem Quantifier {14,15} gehen.
Geht aber nicht.
Hilfe!
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )

View full thread Session für OnlineGame validieren: mit RegEx :)