webForumDet fria alternativet

Cookie problem...

1 svar · 259 visningar · startad av swange

swangeMedlem sedan aug. 200220 inlägg
#1

Jag har problem när jag ska sätta cookie.
Det enda som händer är att programmet printar ut
"Set-Cookie: anamn=dffdgf; path=/; expires=Sunday, 18-Nov-11 23:59:59 GMT\n" i HTTP huvudet.... men sätter in cookien.

Jag skickar med all kod i det berörda cgi programmet.

OBS! Det är mycket annat jox så som datum formatering och dylikt som inte är så relevant i fallet?! Cookien sätts längst ner i koden.

#!/usr/bin/perl
use CGI ':standard';
use DBI;
use Net::SMTP;
print "Content-type: text/plain\n\n";

$dbh = DBI->connect('dbi:ODBC:forum');

$sqlstatement1="SELECT anamn FROM person";
$sth1 = $dbh->prepare($sqlstatement1);
$sth1->execute ||
die "Could not execute SQL statement, maybe invalid?";

$tanamn = param('anamn');
$losen = param('losen');
$namn = param('namn');
$epost = param('epost');
$hemsida = param('hemsida');
$geoplats = param('geoplats');
$intresse = param('intresse');
$signatur = param('signatur');
$datumtemp = gmtime;
$anamn = lc $tanamn; # gör om användarnamn till lowercase

#########################################################
# Kollar så att användarnamnet inte redan finns i DB.
#########################################################

while ($row=$sth1->fetchrow){
$temp = $row;

 if ($temp eq $anamn){
   open (HTML, "\<register_anamn.htm");
   $html = join('',\<HTML\> );
   $html =\~ s/--a--/$anamn/eg;
   $html =\~ s/---losen---/$losen/eg;
   $html =\~ s/---namn---/$namn/eg;
   $html =\~ s/---epost---/$epost/eg;
   $html =\~ s/---hemsida---/$hemsida/eg;
   $html =\~ s/---geoplats---/$geoplats/eg;
   $html =\~ s/---intresse---/$intresse/eg;
   $html =\~ s/---signatur---/$signatur/eg;
   $sth1-\>finish;
   $dbh-\>disconnect;
   print $html;
   exit;			   # stoppar CGI-programmet
 }

}

#########################################################
# Kollar innehåll i icke obligatoriska fält, om fältet
# icke är ifyllt tilldelas variabeln värdet "tom".
#########################################################

if ($hemsida eq ""){
$hemsida = "tom";
}
if ($geoplats eq ""){
$geoplats = "tom";
}
if ($intresse eq ""){
$intresse = "tom";
}
if ($signatur eq ""){
$signatur = "tom";
}

#########################################################
# Formaterar datum från format "Wed Nov 20 11:37:05 2002"
# till format "2002-11-20"
#########################################################

$jaja = index ($datumtemp," ",8); # kollar i strängen om position 8 är tomt
# vilket innebär att datum är mellan första och nionde
if ($jaja == 8){
substr($datumtemp, 8, 1, 0); # Ersätter position 8 med en nolla.
@datum = split / /,$datumtemp;
$manad = $datum[1];
$dag = $datum[2];
$tid = $datum[3];
$ar = $datum[4];
}

else{
@datum = split / /,$datumtemp;
$manad = $datum[1];
$dag = $datum[2];
$tid = $datum[3];
$ar = $datum[4];
}

if ($manad eq Jan){
$manad = "01";
}

elsif($manad eq Feb){
$manad = "02";
}

elsif($manad eq Mar){
$manad = "03";
}

elsif($manad eq Apr){
$manad = "04";
}

elsif($manad eq May){
$manad = "05";
}

elsif($manad eq Jun){
$manad = "06";
}

elsif($manad eq Jul){
$manad = "07";
}

elsif($manad eq Aug){
$manad = "08";
}

elsif($manad eq Sep){
$manad = "09";
}

elsif($manad eq Oct){
$manad = "10";
}

elsif($manad eq Nov){
$manad = "11";
}

elsif($manad eq Dec){
$manad = "12";
}

$datum = $ar."-".$manad."-".$dag;

#########################################################
# Lägger in uppgifterna i databasen.
#########################################################

$sqlstatement="INSERT INTO person (anamn, losen, namn, epost, pdatum, hemsida, signatur, geoplats, intresse) VALUES('$anamn', '$losen', '$namn', '$epost', '$datum', '$hemsida', '$signatur', '$geoplats', '$intresse')";
$sth = $dbh->prepare($sqlstatement);
$sth->execute ||
die "Could not execute SQL statement, maybe invalid?";
$sth->finish;

#########################################################
# Skickar mail med inlogguppgifter.
#########################################################

$message = "Välkommen till ChForum!\nTack för din registrering.\n\nDina inloggningsuppgifter är:\n\nAnvändarnamn: ".$anamn."\nLösenord: ".$losen;
$subject = "Välkommen till ChForum!";
$from = 'stefan@defraction.com';
$smtpserver='mailrelay.bostream.com';
$message = "From: $from\nTo: $epost\nContent-type: text/plain; charset=ISO-8859-1\nSubject: $subject\n\n".$message;
$message=~s/\.\n/\. \n/g;

my $smtp = Net::SMTP->new($smtpserver);
$smtp->mail($from);
$smtp->to($epost);
$smtp->data();
$smtp->datasend($message);
$smtp->dataend();
$smtp->quit();

########################
# Sätter cookie
########################

my $q2 = new CGI;
my $KAKA1 = $q2->cookie(-name => "anamn",-value =>"$anamn",-expires =>'Sunday, 18-Nov-11 23:59:59 GMT\n', -path =>'/');
print "Set-Cookie: $KAKA1\n";

open (HTML, "<register_bek.htm");
$htmlklar = join('',<HTML> );
print $htmlklar;

Peter_BMedlem sedan apr. 2000642 inlägg
#2
 
my $q2 = new CGI; 
my $KAKA1 = $q2->cookie(-name => "anamn",-value =>"$anamn",-expires =>'Sunday, 18-Nov-11 23:59:59 GMT\n', -path =>'/'); 
print "Set-Cookie: $KAKA1\n";

Du behöver väl inte ha med \n i expires-strängen?

sen vet jag inte om man ska skriva expires-grejen formaterad sådär, jag brukar bara dra till med "+3M" eller nått i den stilen.

Om du ställer in internet explorer eller motsvarande till att fråga vid varje cookie så kan du titta på informationen som den tycker att den har... när cookien kommer fram så att säga.

264 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
128 ms — hämta statistik (db)
133 ms — hämta tråd, inlägg och bilagor (db)