Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Cookies


Jhonatas araujo

Pergunta

alguém poderia me dar uma breve explicação Sobre Modolo's ... /?

A questão é o seguinte:

Gostaria que Meu WebBrowser Captura-se Cookies, e Visualizar em um determinado local do mesmo...

Obs:

ex:

Igual o WebBrower = Navegador Opera ...

Poderiam me dar um simples Exemplo

já perguntei a Respeito Disso uma vez ... Mais não ficou Muito Claro ...

Vlw...

Editado por Jhonatas araujo
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Gostaria que Meu WebBrowser Captura-se Cookies, e Visualizar em um determinado local do mesmo

Cookies são pequenos arquivos texto que são enviados por um servidor WEB para nosso Navegador, e salvos em nossos discos. Eles não podem ser executados e nem conter vírus, podem apenas ser lidos pelo mesmo servidor, somente, que os colocou lá. São usados, geralmente, para guardar informações a respeito do usuário, de suas preferências ou mesmo informações pessoais que nos identificam quando voltamos naquele site. Várias empresas se utilizam deste recurso. Um bom exemplo pode ser visto no site da Amazon ( livraria virtual em www.amazon.com ). Quando compramos algum livro lá, damos informações pessoais como nome, endereço, telefone, etc. Estas informações são armazenadas em nosso sistema, e quando voltamos, eles sabem quem somos, ou seja, não teremos mais que informar os dados novamente. Além disso, nossa cesta de compras é armazenada via Cookies, dessa forma, não importa em que página daquele site estejamos, poderemos navegar direto até a página da compra e efetuá-la.

Tudo isto porquê quando uma requisição é atendida, pelo servidor WEB, e uma resposta nos é enviada, nem o servidor nem o Browser cliente se lembram do que ocorreu, e este é o maior desafio na programação de aplicativos WEB, ou seja, a separação das sessões. Cada requisição é tratada como se fosse um novo usuário, e não adianta identificar o usuário pelo seu número IP, pois algumas empresas usam Proxy, e nesse caso dezenas de usuários irão possuir o mesmo IP.

Um Cookie nada mais é do que valor texto no formato CookieName=CookieValue, e não deve incluir aspas, vírgulas ou espaçoes em branco.

Para aprender mais sobre Cookies veja os Links em Leituras Complementares

Existe um método, do TWEBResponse, chamado SetCookieField que serve para enviar um Cookie junto com nosa resposta.

Anatomia do Evento SetCookieField:

procedure SetCookieField(Values: TStrings; const ADomain, APath: string;

AExpires: TDateTime; ASecure: Boolean);

begin

end;

Parâmetros:

Values: Um TStrings ( normalmente usaremos TStringList ) onde cada item representa um Cookie, no

formato Nome=Valor.

ADomain: Domínio ao qual o Cookie pertence.

APath: PATH deste domínio ao qual o Cookie pertence.

AExpires: Determina por quanto tempo este Cookie deve permanecer válido.

ASecure: Se um Cookie deve ou não ser passado apenas por uma conexão segura ( HTPPS )

ADomain e APath são usados em conjunto para identificar o servidor e o Path à qual o Cookie pertence, ou seja, somente quando o usuário visitar este domínio e este path, é que o cookie poderá ser lido pelo servidor WEB.

Se, por exemplo, enviarmos um Cookie com 'grupoalianca.com.br' em ADomain e '/' em APath, então, o Navegador do cliente somente permitirá a leitura do Cookie por uma página ou aplicativo pertencente à este domínio. Já se passarmos o valor '/fbn' em APath, apenas as páginas ou aplicativos dentro deste Path poderão ler o Cookie.

O AExpires é usado para podermos colocar uma data na qual o Cookie deixará de existir. Se passarmo Now+2 em AExpires nosso Cookie só poderá ser lido nos próximos 2 dias. Se enviarmos uma data passada, o nosso Cookie será apagado.

Para fazer um Cookie durar apenas enquanto o navegador do usuário estiver aberto, basta passar em AExpires o valor 0 ( Zero ) ou, no caso do Microsoft IE, -1. Use o TWEBRequest.UserAgent para saber qual o Navegador do cliente.

Os Cookies são lidos, por nossos aplicativos, através da propriedade CookieFields de TWEBRequest. Dessa maneira, para lermos o conteúdo de um Cookie chamado usuario, usaremos a seguinte sintaxe:

Request.CookieFields.Values[ 'usuario' ].

Devido a problemas com Cookies no Microsoft Internet Explorer, nós devemos colocar no evento OnCreate do nosso TWEBModule a seguinte codificação, para garantir que nosso Cookie funcione independente do Navegador

procedure TWebModule1.WebModule1Create(Sender: TObject);

begin

//

ShortDayNames[01] := 'Sun';

ShortDayNames[02] := 'Mon';

ShortDayNames[03] := 'Tue';

ShortDayNames[04] := 'Wed';

ShortDayNames[05] := 'Thu';

ShortDayNames[06] := 'Fri';

ShortDayNames[07] := 'Sat';

//

ShortMonthNames[01] := 'Jan';

ShortMonthNames[02] := 'Feb';

ShortMonthNames[03] := 'Mar';

ShortMonthNames[04] := 'Apr';

ShortMonthNames[05] := 'May';

ShortMonthNames[06] := 'Jun';

ShortMonthNames[07] := 'Jul';

ShortMonthNames[08] := 'Aug';

ShortMonthNames[09] := 'Sep';

ShortMonthNames[10] := 'Oct';

ShortMonthNames[11] := 'Nov';

ShortMonthNames[12] := 'Dec';

//

end;

Devemos alterar os nomes dos dias e dos meses para qualquer aplicativo WEB que formos desenvolver, e no qual seja necessário a manipulação de Cookies. Isto é necessário devido a problemas do Delphi.

Exemplo 06 - Gera_Cookie:

Este é um exemplo bastante simples, temos uma página HTML chamada Gera_Cookie.htm que possui um Form com um campo chamado txt_nome e um botão do tipo Submit, que quando pressionado chamará nosso aplicativo WEB. Este aplicativo possui um só Action Item, cujo evento OnAction é:

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;

Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

Var

slCookies: TStringList;

sNome: String;

begin

sNome := Request.ContentFields.Values[ 'txt_nome' ];

slCookies := TStringList.Create;

Try

slCookies.Add( 'c_nome=' + sNome );

slCookies.Add( 'c_data=' + DateTimeToStr( Now ) );

Response.SetCookieField( slCookies,'','/',NOW+1,False );

Response.Content := ''+ sNome + ', O Cookie foi salvo no seu HD'+ '';

Finally

slCookies.Free;

End;

end;

A primeira coisa que fizemos foi criar uma variável ( sNome ) para armazenar o conteúdo do campo txt_nome do nosso Form HTML, passado via POST ele se encontra em ContentFields. Depois, criamos uma TStringList para armazenar nossos Cookies, e adicionamos a ela duas strings no formato nome=valor. Observe que não deve haver espaços em branco entre o nome e o valor.O que fizemos, na verdade, foi criar dois Cookies, um chamado c_nome e outro c_data. O Cookie c_nome irá armazenar o nome do usuário, informado no campo txt_nome do Form HTML, e o Cookie c_data terá o valor da data de hoje.

Usando SetCookieField nós enviamos os Cookies para o micro do usuário, e encerramos com uma resposta padrão. Note que os parâmetros ADomain e APath foram passados em branco, e cabe a você, se desejar, passar com suas informações de domínio e path.Quanto ao parâmetro AExpires, ele foi passado como NOW+1, o que significa que só vale por um dia.

Download dos fontes de gera_cookies

http://www.geocities.com/SiliconValley/Lak...03/geracook.zip

Exemplo 07 - Ler_Cookie:

Nós poderíamos ter criado, no exemplo anterior, um outro Action Item para ler os Cookies, más resolvemos criar um novo aplicativo só para isso, pois a intenção é mostrar que qualquer aplicativo WEB, dentro do nosso domínio, poderá ler estes Cookies. Este exemplo é bem mais simples. veja o evento OnAction do Action Item Default:

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject;

Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

Var

sNome: String;

sData: String;

begin

sNome := Request.CookieFields.Values[ 'c_nome' ];

sData := Request.CookieFields.Values[ 'c_data' ];

//

Response.Content := 'Olá ' + sNome + ', este '+

'Cookie foi gerado em: '+ sData +'';

end;

A única coisa que fazemos é obter os valores dos dois Cookies, enviados pelo exemplo anterior, e mostrá-los ao usuário. Se tentarmos executar este exemplo após a validade do Cookie ter expirado, não vai haver erro, somente os valores estarão em branco.

Download dos fontes de ler_cookie

http://www.geocities.com/SiliconValley/Lak...103/lercook.zip

Autenticação de Usuários:

Se nosso servidor WEB possuir a opção de Basic Authentication habilitada, poderemos tornar nosso aplicativo acessível somente por pessoas cadastradas em nosso sistema.

O Microsoft Personal Web Server versão 4, quando rodando em Windows 95, não permite esta configuração de segurança.

A maneira correta de fazermos a verificação se uma requisição possui, ou não, os direitos de execução do nosso aplicativo seria através do uso da propriedade Authorization de TWEBRequest. Se estiver em branco, o usuário não foi autenticado pelo servidor. Neste momento poderemos retornar um StatusCode com valor de 401 de volta ao Navegador do usuário, o que fará aparecer uma janela Pop-Up pedindo o nome e a senha ao usuário. Se os dados baterem com os de algum usuário cadastrado, Authorization estará preenchida. Para resumir, só executaremos nosso aplicativo se Request.Authorization for diferente de uma string vazia.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...