Delphi Cookie, como fazer para expirrar o cookie ???

11/06/2004

0

Ola

Não estou conseguindo fazer com que o cookie expirre, alguem pode ajudar ??
Preciso muito disso, obrigado !!!


Adritec

Adritec

Responder

Posts

12/06/2004

Adritec

Feras do Delphi

Não sei se irá ajudar em algo mas no momento estou tentando fazer da seguinte forma (é somente um exemplo):

Ah, é uma aplicação WebBroker com Delphi 7 + Firebird 1.5

Bom no WebModule tenho duas ações ´gera´ e ´ler´. Na ação /gera tenho o seguinte código no evento OnAcion

var slstCookie: TStringList; tpDate : TDateTime; begin slstCookie := TStringList.Create; try with slstCookie do begin Clear; slstCookie.Add(´CookieExample=ACookie´); slstCookie.Add(´CookieField1=Value1´); slstCookie.Add(´CookieField2=Value2´); end; // Response.SetCookieField(slstCookie, ´´, ´/´,Now+1,False); // Response.Content := ´O cookie foi gravado. Certinhu !!!´; tpDate := now(); tpDate := IncMinute(tpDate,30); Response.SetCookieField(slstCookie,´´,´/´,tpDate,False); Response.Content := ´O cookie foi gravado. Certinhu !!!´; Response.Expires := tpDate; finally slstCookie.Free; end;


Se eu descomentar as linhas
Response.SetCookieField(slstCookie, ´´, ´/´,Now+1,False);
Response.Content := ´O cookie foi gravado. Certinhu !!!´;
e comentar as 5 linhas abaixo o Cookie é gerado beleza.

Mas preciso tentar fazer com que ele expirre em 30 minutos. Ai então nas outras ações que tenho farei uma verificação ´SE O COOKIE EXPIRROU O USUARIO SERA LEVADO NOVAMENTE PARA A TELA DE EFETUAR LOGIN´.

Bah sei que num tem muita gente trabalhando com Delphi + Aplicações Web mas se alguem puder ajudar, fico grato.

Ah na ação /ler tenho o seguinte código:

if Request.CookieFields.Values[´CookieField1´] <> ´´ then Response.Content := ´O valor do CookieField1 é ´ + Request.CookieFields.Values[´CookieField1´] + ´´ else Response.Content := ´Onde está o cookie ???´;


Obrigado


Responder

14/06/2004

Rc.salvador

Meu, estou tendo o mesmo problema que vc, e não consegui ainda encontrar uma alternativa para contornar este problema.
Estou ficando desanimado, pois já faz três dias inteiros que estou rachando a cabeça para fazer isso funcionar.
Vc encontrou uma alternativa para isso ??
Ou devo me conformar que o delphi+web é um fracasso ??


Responder

17/02/2019

Lucio Motta

Feras do Delphi

Não sei se irá ajudar em algo mas no momento estou tentando fazer da seguinte forma (é somente um exemplo):

Ah, é uma aplicação WebBroker com Delphi 7 + Firebird 1.5

Bom no WebModule tenho duas ações ´gera´ e ´ler´. Na ação /gera tenho o seguinte código no evento OnAcion

[quote:b51f16d69a]var
slstCookie: TStringList;
tpDate : TDateTime;
begin
slstCookie := TStringList.Create;
try
with slstCookie do begin
Clear;
slstCookie.Add(´CookieExample=ACookie´);
slstCookie.Add(´CookieField1=Value1´);
slstCookie.Add(´CookieField2=Value2´);
end;
// Response.SetCookieField(slstCookie, ´´, ´/´,Now+1,False);
// Response.Content := ´O cookie foi gravado. Certinhu !!!´;

tpDate := now();
tpDate := IncMinute(tpDate,30);
Response.SetCookieField(slstCookie,´´,´/´,tpDate,False);
Response.Content := ´O cookie foi gravado. Certinhu !!!´;
Response.Expires := tpDate;

finally
slstCookie.Free;
end;
[/quote:b51f16d69a]

Se eu descomentar as linhas
Response.SetCookieField(slstCookie, ´´, ´/´,Now+1,False);
Response.Content := ´O cookie foi gravado. Certinhu !!!´;
e comentar as 5 linhas abaixo o Cookie é gerado beleza.

Mas preciso tentar fazer com que ele expirre em 30 minutos. Ai então nas outras ações que tenho farei uma verificação ´SE O COOKIE EXPIRROU O USUARIO SERA LEVADO NOVAMENTE PARA A TELA DE EFETUAR LOGIN´.

Bah sei que num tem muita gente trabalhando com Delphi + Aplicações Web mas se alguem puder ajudar, fico grato.

Ah na ação /ler tenho o seguinte código:

[quote:b51f16d69a] if Request.CookieFields.Values[´CookieField1´] <> ´´ then
Response.Content := ´O valor do CookieField1 é ´ + Request.CookieFields.Values[´CookieField1´] + ´´
else
Response.Content := ´Onde está o cookie ???´;
[/quote:b51f16d69a]

Obrigado


Responder

17/02/2019

Lucio Motta

é bem antigo... mas segue uma dica do blog da embarcadero:

When using Cookies in webbroker, it assumes all times are in GMT for cookies so setting a cookie to expire in 2 minutes will not work unless if your timezone is GMT.

Here is a workaround.

uses
{$IFDEF MSWINDOWS}Windows,{$ENDIF}
{$IFDEF LINUX}Libc,{$ENDIF}
DateUtils;

resourcestring
RSFailedTimeZoneInfo = 'Failed attempting to retrieve time zone
information.';

function OffsetFromUTC: TDateTime;
{$IFDEF LINUX}
var
T: TTime_T;
TV: TTimeVal;
UT: TUnixTime;
begin
gettimeofday(TV, nil);
T := TV.tv_sec;
localtime_r(@T, UT);
// __tm_gmtoff is the bias in seconds from the UTC to the current time.
// so I multiply by -1 to compensate for this.
Result := -1*(UT.__tm_gmtoff / 60 / 60 / 24);
end;
{$ENDIF}
{$IFDEF MSWINDOWS}
var
iBias: Integer;
tmez: TTimeZoneInformation;
begin
// Copied from IdGlobal.pas
case GetTimeZoneInformation(tmez) of
TIME_ZONE_ID_INVALID:
raise EFailedToRetreiveTimeZoneInfo.Create(RSFailedTimeZoneInfo);
TIME_ZONE_ID_UNKNOWN :
iBias := tmez.Bias;
TIME_ZONE_ID_DAYLIGHT :
iBias := tmez.Bias + tmez.DaylightBias;
TIME_ZONE_ID_STANDARD :
iBias := tmez.Bias + tmez.StandardBias;
else
raise EFailedToRetreiveTimeZoneInfo.Create(RSFailedTimeZoneInfo);
end;
{We use ABS because EncodeTime will only accept positve values}
Result := EncodeTime(Abs(iBias) div 60, Abs(iBias) mod 60, 0, 0);
end;
{$ENDIF}

Use it as: Expires := Now + (however long in TDateTimeFormat)+OffsetFromUTC;

such as: Expires := IncMinute(Now, DefaultTimeout) + OffsetFromUTC;
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar