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.268 ]

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

Pascal para Web com CGI - Parte I

Introdução ao PHP-GTK

Leitura recomendada

Configurando o Apache para executar CGIs em Kylix

Pascal para Web com CGI - Parte I

Criando aplicação para detectar informações do sistema em Kylix

Lazarus, uma IDE em FreePascal que pretende concorrer fortemente com o Kylix

Como garantir compatibilidade entre Kylix e Delphi

  
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