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;