Я уже давно использую авторизацию вот такого принципа:
При успешной проверке логин а пароля пользователю пишутся куки с логином пользователи и его сессией
print "Set-Cookie: id=$id; expires=.date()+3600*24*100; path=/;\\n";
print "Set-Cookie: sess=$sess; expires=.date()+3600*24*100; path=/;\\n";
И в дальнейшем, при каждом обращении к пользовательской части сайта я вытягиваю эти куки с сверяю их с теми, что записаны в БД
$cookhttp= $ENV{\'HTTP_COOKIE\'} || $ENV{\'COOKIE\'};
@cookies = split (/\\; /,$cookhttp);
foreach $cookies (@cookies)
{
($n, $value) = split(/=/, $cookies);
$n =~ tr/+/ /;
$n =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$C{$n} = $value;
}
#$C{id} - id пользователя
#$C{sess} - сессия пользователя
Однако, приблизительно 20% пользователей с включенными кукисами ругаются, что не могут после успешной авторизации работать с сайтом, так как их опять выбрасывает на форму авторизации со словами о том, что вы не авторизованы.
Посмотрите пожалуйста приведенные коды. Все пролез, вроде все правильно. Но ведь работает через раз! Почему? Нутром чувствую, что что-то не так с записью или чтением кукисов