#!/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|.) } } }