Hallo,
in meinem FTP Server benutze ich einfach Socket.Data. Da setze ich einfach eine Session Nummer.
Bei HTTPServer z.B. Cookie Write:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var WriteCookie::TIdCookieRFC2109; begin WriteCookie := responseinfo.Cookies.Add; WriteCookie.CookieName := 'MeineVar'; WriteCookie.Value := 'user=144'; WriteCookie.Domain := 'meineseite.de' WriteCookie.Expires := 'Wed, 30-SEP-2020 01:00:01 GMT'; end; |
und lies cookie mit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Function Cook(var RI:TIdHTTPRequestInfo):String; var ReadCookie:TIdCookieRFC2109; begin ReadCookie := RI.Cookies.Cookie['MeineVar']; if (ReadCookie = nil) then begin Result:='' else Result:=ReadCookie.Value; end; |
Ausserdem kannst Du auch einfach eine Session Variable im generierten HTML Code setzen und diese dann bei einen erneuten HTTP Get auslesen.
Ich habe das in meinem Server damals so geloest, dass ich in der HTML Datei eine hidden variable defniert habe mit dem Wert $$Sess$$.
[HTML]
<input type="hidden" name="sess" id="sess" value="$$Sess$$">
[/HTML]
Ich lese die HTML Datei im GET ein mache einen StringReplace $$Sess$$ und ersetze das mit der genierten Session Nummer.
Packe den String in einen Stream und sende es zum Client.
Bei erneuten Aufruf durch den Client lese ich den Session Wert wieder aus dem IdHTTPRequestInfo.
Alles was Du machen musst ist, wenn der Parameter sess nicht definiert ist im RequestInfo dann halt generieren.
Nicht die feine Art, aber funktioniert halt ohne Session Automatik und ohne cookies.
Beispiel ist
www.TrackDollar.com das ist eine Delphi EXE mit IdHTTPServer.
Bin mir sicher es gibt bessere Moeglichkeiten, aber bin halt damals diesen Weg gegangen und funktioniert gut auf allen Browsern selbst wenn Cookies deaktiviert sind.
Tschuess
Markus von weit wech