Schrift
[thread]173[/thread]

Cookies: Wie mach ich das?

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
youngalcapone
 2004-02-18 19:59
#1254 #1254
User since
2003-08-14
185 Artikel
BenutzerIn
[default_avatar]
Aloha!
Wie setzt ich eigentlich Cookies und wie les ich die dann wieder aus?
Geht das überhaupt mit Perl oder brauch ich dafür JS?
Gruss, Dave
renee
 2004-02-18 20:15
#1255 #1255
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
siehe http://www.perldoc.com/perl5.8.0/lib/CGI/Cookie.html
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
[E|B]
 2004-02-18 21:02
#1256 #1256
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Oder auch doch JS? ;)
Siehe http://www.selfhtml.net/javascript/objekte/document.htm#cookie
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2004-02-19 00:49
#1257 #1257
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
tja im Alten Board hatte ich da mal ein tolles Beispiel gepostet...
schade, dass dies niemand gerettet hatte...
Strat
 2004-02-19 01:03
#1258 #1258
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
use CGI;
# ...
my $cgi = CGI->new();

my $cookie = $cgi->cookie(
-name => "nameDesCookie",
-value => $wert,
-path => "/",
-expires => '+1d',
);

$value kann auch eine Hashreferenz sein, dann kann man so mehrere Werte in einem Cookie speichern.

den cookie kann man dann folgendermaszen setzen:
z.B. durch einen redirect auf eine andere seite
Code: (dl )
1
2
3
4
print $cgi->redirect(
-url => $forwardUrl,
-cookie => $cookie
);

oder durch ausgabe einer normalen seite:
Code: (dl )
1
2
3
4
print $cgi->header(
-type => "text/html",
-cookie => $cookie,
);


Die Werte eines Cookies kann man folgendermaszen bekommen:
Code: (dl )
1
2
3
use CGI;
my $cgi = CGI->new();
my $cookieValue = $cgi->cookie('nameDesCookies');

oder wenn es sich um eine Hashreferenz handelt, weil da mehrere Werte gespeichert sind:
Code: (dl )
my %cookieValue = $cgi->cookie('nameDesCookies');


einen cookie kann man nicht auf der seite auslesen, auf der man ihn setzt, sondern erst auf einer nachfolgenden. deshalb verwende ich da gerne den redirect von oben, ueberpruefe dann auf der neuen seite, ob der cookie gesetzt wurde, und bekomme somit mit, ob der cookie erfolgreich gesetzt werden konnte...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
youngalcapone
 2004-02-24 18:31
#1259 #1259
User since
2003-08-14
185 Artikel
BenutzerIn
[default_avatar]
währe es wohl auch möglich das Cookie auf eine andere Art zu setzten?
Weil ein redirect auf eine andere Seite möchte ich lieber nicht machen, da ich in meinem Script bleiben möchte.
Den Header füg ich aus einer Zusatzdatei ein, geht also auch nicht....
esskar
 2004-02-24 18:41
#1260 #1260
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
*uraltcodeauskram"

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
sub SetCookie {
my ($name, $default, $domain) = @_;

my $cookie = cookie(
-NAME => "$name",
-VALUE => "$value",
-EXPIRES => "+2y",
-DOMAIN => "$domain",

);
my @ckyContent = split(/\n/, header(-COOKIE => $cookie));
print "$ckyContent[0]\n";
print "$ckyContent[1]\n";

return $value;
}

sub GetCookie {
my ($name, $default, $domain) = @_;

my $value = cookie($name) || SetCookie($name, $default, $domain);

return $value;
}
youngalcapone
 2004-02-24 19:07
#1261 #1261
User since
2003-08-14
185 Artikel
BenutzerIn
[default_avatar]
Ich versteh deinen Code nicht ganz...
poste hier mal meinen:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/perl
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser); # zur Fehlerausgabe auf dem Browser

my $cgi = CGI->new();
my %vars = $cgi->Vars();

# head.htm und foot.htm einlesen
open HEAD, "../head.htm" or die "$!";
my @head = <HEAD>;
close HEAD;
open FOOT, "../foot.htm" or die "$!";
my @foot = <FOOT>;
close FOOT;

# Ausgabe der Seite beginnt
print "Content-type: text/html\n\n";
print @head;

if (!%vars) {
print '<h1>Shop</h1>';
} else {
# Eingaben einlesen
my $aktion = $vars{aktion};
my $produkt = $vars{produkt};
my $preis = $vars{preis};
my $anzahl = $vars{anzahl};

# Eingaben überprüfen
push(my @message,"keinen Aktion angegeben!<br>") if (!$aktion);
push(@message,"kein Produkt angegeben!<br>") if (!$produkt);
push(@message,"keinen Preis angegeben!<br>") if (!$preis);

if (!$anzahl) {
push(@message,"keine Anzahl angegeben!<br>");
} elsif ($anzahl == 0) {
push(@message,"Keine gueltige Anzahl angegeben!<br>");
}

# Meldung ausgeben
if(!@message){
#Cookie setzen
my $cookie = $cgi->cookie(
-name => "warenkorb",
-value => my @waren,
-path => "/",
-expires => '+1h',
);
print "<h2>In Warenkorb aufgenommen!</h2>
<br><br><a href=\"/shop/index.shtml\">Hier</a> geht es zurück zum Shop!";
} else {
print "<h2>Folgende Fehler traten bei der Eingabe auf:</h2>
@message
<a href=\"javascript:history.back()\">Hier</a> geht es zurück zum Shop";
}
}

print @foot;

Das sollte dann mal einen Shop geben, sobald das mit den Cookies funktioniert sehe ich keine grossen Probleme mehr (das denke ich eigentlich jedes mal wenn ich was schreibe und dann kommts immer anders... ):)
Ich wär natürlich dennoch dankbar wenn ihr mir helfen könntet!\n\n

<!--EDIT|youngalcapone|1077643836-->
esskar
 2004-02-24 19:27
#1262 #1262
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
so
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/perl
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser); # zur Fehlerausgabe auf dem Browser

my $output = "";

my $cgi = CGI->new();
my %vars = $cgi->Vars();

# head.htm und foot.htm einlesen
open HEAD, "../head.htm" or die "$!";
my @head = <HEAD>;
close HEAD;
open FOOT, "../foot.htm" or die "$!";
my @foot = <FOOT>;
close FOOT;

# Ausgabe der Seite beginnt

$output .= join "", @head;

if (!%vars) {
$output .= '<h1>Shop</h1>';
} else {
# Eingaben einlesen
my $aktion = $vars{aktion};
my $produkt = $vars{produkt};
my $preis = $vars{preis};
my $anzahl = $vars{anzahl};
my @message = ();

# Eingaben überprüfen
push(@message,"keinen Aktion angegeben!<br>") if (!$aktion);
push(@message,"kein Produkt angegeben!<br>") if (!$produkt);
push(@message,"keinen Preis angegeben!<br>") if (!$preis);

if (!$anzahl) {
push(@message,"keine Anzahl angegeben!<br>");
} elsif ($anzahl == 0) {
push(@message,"Keine gueltige Anzahl angegeben!<br>");
}

# Meldung ausgeben
if(!@message)
{
#Cookie setzen
my $cookie = $cgi->cookie(
-name => "warenkorb",
-value => "Sachem im warenkorb", # my @waren, solange bis in @waren auch mal was drin ist
-path => "/",
-expires => '+1h',
);
print $cookie;
$output .= "<h2>In Warenkorb aufgenommen!</h2>
<br><br><a href=\"/shop/index.shtml\">Hier</a> geht es zurück zum Shop!";
} else {
$output .= "<h2>Folgende Fehler traten bei der Eingabe auf:</h2>
@message
<a href=\"javascript:history.back()\">Hier</a> geht es zurück zum Shop";
}
}

print "Content-Type: text/html\n\n";
print $output;
print @foot;
youngalcapone
 2004-05-20 19:36
#1263 #1263
User since
2003-08-14
185 Artikel
BenutzerIn
[default_avatar]
Aloha!
So sollte es eigentlich ja gehen:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/perl
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser); # zur Fehlerausgabe auf dem Browser

my $output = "";

my $cgi = CGI->new();
my %vars = $cgi->Vars();

print "Content-Type: text/html\n\n";

# head.htm und foot.htm einlesen
open HEAD, "../head.htm" or die "$!";
my @head = <HEAD>;
close HEAD;
open FOOT, "../foot.htm" or die "$!";
my @foot = <FOOT>;
close FOOT;

# Ausgabe der Seite beginnt

$output .= join "", @head;

if (!%vars) {
$output .= '<h1>Shop</h1>';
} else {
# Eingaben einlesen
my $aktion = $vars{aktion};
my $produkt = $vars{produkt};
my $preis = $vars{preis};
my $anzahl = $vars{anzahl};
my @message = ();

# Eingaben überprüfen
push(@message,"keinen Aktion angegeben!<br>") if (!$aktion);
push(@message,"kein Produkt angegeben!<br>") if (!$produkt);
push(@message,"keinen Preis angegeben!<br>") if (!$preis);

if (!$anzahl) {
push(@message,"keine Anzahl angegeben!<br>");
} elsif ($anzahl == 0) {
push(@message,"Keine gueltige Anzahl angegeben!<br>");
}

# Meldung ausgeben
if(!@message)
{
#Cookie setzen
my $cookie = $cgi->cookie(
-name => "warenkorb",
-value => "$produkt, $preis, $anzahl\n", # my @waren, solange bis in @waren auch mal was drin ist
-path => "/",
-expires => '+1h',
);

print $cookie;
$output .= "<h2>In Warenkorb aufgenommen!</h2>
<br><br><a href=\"/shop/index.shtml\">Hier</a> geht es zurück zum Shop!";
} else {
$output .= "<h2>Folgende Fehler traten bei der Eingabe auf:</h2>
@message
<a href=\"javascript:history.back()\">Hier</a> geht es zurück zum Shop";
}
}


print $output;
print @foot;


Es werden aber keine Cookies gespeichert, wo ist da noch der Wurm drin?
Wäre extrem dankbar wenn ihr mir weiterhin helfen könntet!
Gruss, der wiederheimgekehrte Dave
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2004-02-18 19:59.