Avatar billede nielslbeck Nybegynder
10. oktober 1999 - 09:53 Der er 19 kommentarer og
1 løsning

session-objekt i Perl?

Hvordan holder man styr på hvilke brugere som er logget ind med kodeord? I ASP kan man bruge session("userok") = true, men hvordan gør man i Perl? Er der også en eller anden slags "session"-ting, der tilhører de enkelte brugere?
Avatar billede nielslbeck Nybegynder
11. oktober 1999 - 06:38 #1
Kom nu, i ved det jo godt...
Avatar billede erikjacobsen Ekspert
13. oktober 1999 - 10:34 #2
Du kan altid gøre ca. som ASP gør, dvs. gemme en cookie hos brugeren
med en id, der bruges til opslag i en DB ved hver forespørgsel.

Men det burde være lavet til Perl - jeg ved bare ikke hvor.
Avatar billede nielslbeck Nybegynder
13. oktober 1999 - 11:49 #3
Jeg har godt nok tænkt på cookie-ideen, men det må da kunne gøres uden. Hvad nu hvis brugerens browser ikke understøtter cookies, eller brugeren måske har slået dem fra, så kan han ikke blive godkendt. Det vil da være lidt dumt.
Avatar billede erikjacobsen Ekspert
13. oktober 1999 - 12:50 #4
Ja, men sådan virker ASP og deres session-variabler. Alternativet
er at have en id med som "hidden"-felt i forme, eller med som parameter
på alle links.    <A HREF="naeste.pl?id=2342321">
Avatar billede nielslbeck Nybegynder
13. oktober 1999 - 14:30 #5
Nå for Søren. Det vidste jeg ikke. Bruger ASP bare cookies? Hmm. Ja okay, jeg kunne selvfølgelig overveje det med hidden-felter eller parametre, men så ville andre folk som brugte den samme computer vel kunne gå tilbage i cachen og læse kodeordet (eller hvad nu der måtte stå). Man kunne selvfølgelig sætte en udløbsdato, men ville browseren ikke alligevel vise dokumentet hvis den ikke kunne få adgang til den "rigtige" side på nettet?
Avatar billede erikjacobsen Ekspert
14. oktober 1999 - 07:33 #6
Jo, men det er et problem med vigtige passwords. Hvis man siger
at siden ikke skal gemmes, bliver den det nok heller ikke. Dog skal
du nok ikke gemme passwordet i hverken cookie eller html,
men en identifikation (tilfældigt nummer), der udløber når manden "logger ud", eller der er gået 10-20 minutter.

Forøvrigt - har du set i diverse Perl-arkiver om der er en pakke, der
implementerer dette nogenlunde automatisk?
Avatar billede nielslbeck Nybegynder
14. oktober 1999 - 17:51 #7
Nej det har jeg ikke set efter.

Når nu vi lige er ved at snakke om cookies, hvordan Søren sender man så en cookie til brugeren, når man også vil sende brugeren videre til en anden side i samme script? Jeg bruger print "Location: enside.html\n\n"; til at sende brugeren videre til en anden side, men for at sende en cookie er man (så vidt jeg ved) nødt til at sende en print "Content-type: text/html\n";. Men hvordan benytter man begge dele i samme script?
Hvis man har content'en først, skrives location'en ud på skærmen, og hvis man har location'en først kommer browseren med et save download vindue, hvor den spørger hvor .pl files skal gemmes. Hvad kan man ellers gøre?
Avatar billede erikjacobsen Ekspert
14. oktober 1999 - 19:45 #8
Åh, ja, det er den der HTTP-protokol. Nu om dage "snyder" jeg og
bruger PHP og ASP, og der er det hele pakket ind. Hmm, jeg kan
vel lige få kigget i min bog i morgen.

Hvis jeg husker rigtigt behøver man ikke ikke sende Content-type
hvis man vil sætte en cookie.
Avatar billede nielslbeck Nybegynder
14. oktober 1999 - 20:35 #9
Okay, jeg venter med spænding.

Nå så du synder, ja, det er vel ikke alle, som kan holde modet oppen.
Avatar billede erikjacobsen Ekspert
15. oktober 1999 - 13:56 #10
Jeg synder ikke - jeg snyder...

Content-type: test/html
Set-Cookie: navn=værdi          (NB husk evt. udløbstidspunkt)
Location: http://...whatever

Det er ikke prøvet, men burde sætte en cookie, og gå til en anden side.
Avatar billede nielslbeck Nybegynder
15. oktober 1999 - 15:03 #11
Jeg skal kigge på det, men jeg skal lige hjem fra skolen først, og det bliver nok lidt sent, da der er cafe nu, og bagefter skal vi følges ned i byen...
Avatar billede erikjacobsen Ekspert
15. oktober 1999 - 15:05 #12
Mon ikke der skulle stå

Content-type: text/html

;-) Bare rolig Niels, jeg holder døgnvagt...
Avatar billede nielslbeck Nybegynder
15. oktober 1999 - 20:51 #13
Jeg har prøvet på mange forskellige måder nu, men jeg kan altså ikke få det til at virke. For at cookien skal virke, er det nødvendigt at sende et \n, men så vil location'en ikke virke! ØV!
Jeg benytter Matt Wright's cookie ting (http://www.worldwidemart.com/scripts/) til at sætte cookies med, men den skulle virke fint. Jeg tror jeg vil prøve at kontakte ham, for at høre om han ved det. Jeg vender selvfølgelig tilbage hertil...
Avatar billede erikjacobsen Ekspert
15. oktober 1999 - 23:14 #14
Hmm, et er teori, et andet praksis. Jeg burde selv lave nogle
eksperimenter. Men det bliver nok først en gang i
efterårsferien.
Avatar billede nielslbeck Nybegynder
16. oktober 1999 - 16:01 #15
Det er bare helt ok...
Avatar billede erikjacobsen Ekspert
21. oktober 1999 - 23:28 #16
Hurrah, så er det efterårsferie. Øv, jeg har ikke lige Perl på denne maskine.
Men jeg har leget lidt med "vores" problem i Delphi-Pascal:

Dette lille program sætter en cookie *og* sender mig til et andet sted.
At cookien er der fremgår af cookie-filen:

localhost    FALSE    /cgi-bin    FALSE    944956800    hejsa    erik


program test1;

begin
  //writeln('HTTP/1.1 200 OK');
  writeln('Content-type: text/html');
  writeln('Set-Cookie: hejsa=erik; expires=12-Dec-99 00:00:00 GMT');
  writeln('Location: http://localhost/erik/index.html');
  writeln;
  writeln('<HTML><HEAD><TITLE>Test af CGI</TITLE></HEAD>');
  writeln('<BODY><H1>Test af CGI</H1></BODY></HTML>');

end.

Du kan vel selv oversætte writeln til print, Niels.

Nå, hvad siger du så?
Avatar billede nielslbeck Nybegynder
22. oktober 1999 - 20:31 #17
Jeg er ked af det, men jeg kan altså ikke få dit eksempel til at virke! Jeg har siddet de sidste par timer for at få det til at virke, jeg har prøvet med et perlscript men jeg har også selv prøvet at lave et Delphi program som dit, men det vil bare ikke virke!
Mit problem er som det plejer, at skal jeg ha' cookien til at virke, skal der være to linieskift efter Set-Cookie'en, men så bliver Location'en bare skrevet ud på skærmen.
Kan det måske have noget at gøre med at jeg bruger IIS 5.0 under Windows 2000 med Internet Explorer 5 og Perl version 5.et-eller-andet? Det kan måske være det, der gør det? Jeg har min side til at ligge på en Unix server, også med Perl 5.et-eller-andet, jeg vil prøve om det måske virker der. Det er da trods alt der det helst skulle virke. Det bliver bare lidt dyrt at skrive/teste sine scripts mens man er online, men jeg må jo prøve.
Hvorfor printer du egentlig HTML kode ud til sidst i dit eksempel? Det skulle da helst ikke blive vist, når brugeren bliver redirectet til en anden side.
Avatar billede nielslbeck Nybegynder
22. oktober 1999 - 20:37 #18
Hey, det var åbenbart problemet! Altså Windows 2000 eller IIS 5.0 eller noget i den stil, det virker helt fint når først det bliver uploaded til serveren. Mystisk. Det må altså være et eller andet som Windows 2000/IIS 5.0 ikke kan finde ud af at gøre rigtigt.
Tja, så ved man jo det. Det var da noget skidt noget, så skal jeg være online for at afprøve mine scripts! ØV!
Tak for hjælpen! Vil du ikke lige sende et eller andet som et svar, så skal du nok få dine point for din tålmodighed med en dum bruger (og hans dumme computer). Tak...
Avatar billede erikjacobsen Ekspert
22. oktober 1999 - 23:07 #19
Nåh, HTML-koden var bare for at kunne afprøve uden
redirection, og så er det jo også betryggende at se,
at det *ikke* kommer ud...

Det kan sagtens være serveren (IIS 5), der jo godt kan
smage lidt på headerne. Da jeg havde den der "HTTP/1.1"-
linie stående ville Apache til Windows bestemt ikke sende
siden videre.

Men, ok, problemet løst, men ikke forstået :-)
Avatar billede nielslbeck Nybegynder
26. oktober 1999 - 06:33 #20
Endnu en gang, tak for hjælpen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester