Pascal para Web com CGI - Parte II

Continuando a série de artigos sobre programação para Web com (Object) Pascal, veremos agora como trabalhar com cookies, sessions, Upload de arquivos e utilizar templates para melhorar o visual de nosso site e/ou aplicação.

[ Hits: 30.390 ]

Por: Zendrael em 29/03/2013


Cookies e sessions



Cookies e sessions são maneiras de guardar algumas informações do usuário que visita determinada página, ou aplicação Web em arquivos, de maneira a tornar essas informações disponíveis entre várias páginas e, às vezes, entre visitas do usuário ao site (desde que o navegador não seja fechado e os dados de navegação não sejam apagados).

O cookie normalmente é gravado na máquina do cliente, em diretório diferente de acordo com o navegador utilizado e o sistema operacional. As informações salvas em cookies podem ser acessadas pelo usuário na máquina local e até alteradas - o que torna o cookie pouco seguro, se comparado às sessions.

As sessions (ou sessões) possuem funcionamento similar ao dos cookies, porém, o arquivo que guarda as informações é mantido no servidor do site visitado e identificado por uma cadeia alfanumérica única para cada visitante.

O usuário não pode alterar informações de sua sessão, a menos que o site permita. Por ser mais seguro que o cookie, as informações de login e senha, por exemplo, são comumente guardadas em sessões.

Para este exemplo, vamos criar uma nova action em nosso Webmodule com o nome "info". Para que o controle por sessions seja possível em nossa aplicação, marque a propriedade "CreateSession" como "True", através do "Object Inspector".

No evento "OnRequest" da "action info", adicione o seguinte código:

procedure TFPWebModule1.infoRequest(Sender: TObject; ARequest: TRequest;

    AResponse: TResponse; var Handled: Boolean);

var

cv : string;

cookie: TCookie;

begin

//pega o valor de uma chave de Cookie para testar se ele existe

cv := ARequest.CookieFields.Values['meucookie'];

//Se o valor da chave 'meucookie' existir...

if cv <> '' then

begin

    //mostra o valor da chave

    AResponse.Content := 'Cookie tem valor: ' + cv + '<br /><br />';

end

else begin

    //se não, retorna não configurado e prepara para a próxima execução

    AResponse.Contents.Add( 'Cookie não configurado!<br /><br />' );

    //cria o Cookie que será lido na próxima execução

    cookie := AResponse.Cookies.Add;

    cookie.Name := 'meucookie';

    cookie.Value := 'valor_do_cookie';

end;

//Se a aplicação puder criar a Session...

if CreateSession and Assigned(Session) then

begin

//verifica se há uma variável de sessão com algum valor

    if Session.Variables['minhasession'] <> '' then

    begin

    AResponse.Contents.Add( 'Session ID: ' + Session.SessionID + '<br />' );

    AResponse.Contents.Add( 'Session minhasession tem valor: ' + Session.Variables['minhasession'] );

    end

    //se não houver valor, informa e atribui para a próxima execução

    else begin

    AResponse.Contents.Add( 'Session sem valor!' );

    //O ID da Session é atribuído automaticamente

    //só precisamos adicionar valores às variáveis que utilizaremos

    Session.Variables['minhasession'] := 'valor_da_minha_session';

    end;

end

else begin

    AResponse.Contents.Add( 'Erro criando sessão!' );

end;

//informa que a ação foi completada

Handled := true;

end;


Os comentários no código explicam o que cada linha faz. Você vai notar que usei a tag <br /> no final de algumas linhas; é o correspondente em HTML para o \n, já que a saída da nossa aplicação será interpretada pelo navegador.

Agora, podemos compilar nosso projeto e colocá-lo na pasta "cgi-bin" do servidor. Para testá-lo, acessamos a seguinte URL no navegador:
  • http://127.0.0.1/cgi-bin/projeto.cgi/info

A priori, não haverão informações a serem apresentadas, já que esta é a primeira vez que o programa é executado, e tanto o cookie quanto a session, acabaram de ser criados.

Recarregue a página e as informações serão apresentadas. O que ocorre nesta segunda execução é nada mais que a verificação de existências de cookies e sessions (se eles já foram criados para este usuário) e, em caso positivo, apresenta as informações geradas na primeira vez (na criação).

Lembre-se que essas informações poderão persistir até que o navegador seja fechado, assim, se quiser fazer um novo teste, limpe o cache do navegador e atualize a página.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Cookies e sessions
   3. Upload de arquivos
   4. Templates
   5. Escondendo a URL do CGI
Outros artigos deste autor

Introdução ao PHP-GTK

Pascal para Web com CGI - Parte I

Leitura recomendada

Configurando o Apache para executar CGIs em Kylix

Pascal para Web com CGI - Parte I

Como garantir compatibilidade entre Kylix e Delphi

Configurando o Apache para executar CGIs em Kylix

Criando uma aplicação Kylix com PostgreSQL usando Zeos (parte 3)

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts