INTRODUÇÃO AO CURSO DE LUA 3.2

Linguagem de Programação Lua

1 O que é CGILua?

• Ferramenta para geração de páginas HTML dinâmicas via servidor HTTP.
• Programa CGI que roda no servidor.
• Utiliza um interpretador Lua para codificar os comandos que gerarão as páginas HTML.
• É uma linguagem interpretada – não é necessária compilação.
• Recebe arquivos a serem interpretados, os processa oferecendo acesso a banco de dados, E/S, criptografia etc, e gera HTML de saída.
• Manipula dados de formulário HTML.
• Pode-se utilizar tanto código embutido em HTML (templates) quanto módulos Lua separados (scripts).
• Não possui estado (valores de variáveis não são guardados no servidor).

Execução

Para executar um script CGILua, deve-se utilizar a URL no formato: http:://<web-server>/<path-cgilua>/path-script>

 onde:

path-cgilua: caminho virtual relativo ao servidor web onde o CGILua está instalado. path-script: caminho físico (relativo ao diretório-base do diretório virtual) do script a ser executado. Ex: http:://www.abc.com/cgi/cgilua.exe/scripts/teste.lua

2 Scripts Lua e Templates HTML

Scripts Lua

• Arquivos com extensão .lua totalmente escritos em Lua.
• Comunica-se com o servidor utilizando-se do dispositivo de saída padrão – write e print.
• No início do script, deve ser gerado um cabeçalho HTTP informando o tipo do documento (Content-type).

 

Templates HTML

• Arquivos com extensão .html ou .htm, escritos em HTML mas com código Lua e marcações especiais.
• CGILua processa o código Lua e marcações especiais para gerar código HTML dinâmico.
• Código estático: HTML; Código dinâmico: Lua/marcações.

3 Templates HTML: Marcadores Especiais

Campos de Expressão

Insere o resultado da expressão Lua no documento HTML.

FORMATO:
$| expressão-lua |$

ARGUMENTOS: expressão-lua: qualquer expressão em Lua que retorne um valor, como por exemplo uma variável ou o retorno de uma função. Caso retorne nil, nada é inserido.

Campos de Código

Executa o código Lua entre os delimitadores.

FORMATO:

Diretiva de Laço

Repete determinado trecho de código enquanto uma expressão testada seja verdadeira.

FORMATO:

ARGUMENTOS: start: condição inicial para o laço. test: expressão testada. Ao retornar nil (falso), pára o laço. action: ação executada em cada ciclo do laço

Diretiva Condicional

Testa uma expressão e Inclui determinado HTML caso a expressão seja verdadeira ou outro HTML caso a expressão seja falsa.

FORMATO:

ARGUMENTOS: test: expressão testada. Se retornar não-nil (verdadeiro), inclui o primeiro trecho de código HTML. Se retornar nil (falso), inclui o segundo trecho de código HTML, caso especificado.

4 Formulários

• CGILua processa dados vindos de formulários HTML (FORM), automaticamente decodificando os dados recebidos em uma tabela cgi.
• CGILua trata da mesma forma e transparentemente o método de envio de dados do FORM (POST ou GET).
• O script que será executado para processar os dados (campo action do FORM) pode ser tanto um template html quanto um script lua. Recomenda-se o uso da função cgilua.mkurl para gerar a URL deste script.
• Os campos de dados recebidos do FORM são colocados como campos da tabela cgi, com o nome original.

5 Envio de Arquivos

Introdução

• CGILua permite o envio de arquivos através do HTML ().
• O arquivo é enviado do navegador cliente a um diretório do servidor.
• Os seguintes atributos do FORM devem ser especificados: method=“POST” e enctype=“multipart/form-data”.

Destino dos Arquivos

Para definir o destino dos arquivos enviados, deve-se especificar uma tabela de regras de envio (no mesmo contexto que o HTML de envio)

 

pattern: expressão regular que deve casar com o arquivo sendo enviado Deve-se utilizar ou a target ou a func: target: expressão regular que define o nome de destino do arquivo. Pode-se usar capturas feitas com parêntesis no pattern através de %1, %2, %3 etc. func: nome da função que recebe o nome do arquivo de origemoriginal como parâmetro e deve retornar o nome de destino do arquivo root_dir: diretório destino dos arquivos enviados

Para definir as regras globais default, deve-se definir esta tabela com o nome cgilua.uploadrules Para definir uma regra específica, deve-se colocar um campo do tipo INPUT HIDDEN no formulário HTML imediatamente antes do INPUT FILE, com o campo VALUE contendo o nome da variável global contendo a tabela de regras, e com o campo NAME igual ao campo NAME do INPUT FILE, mas com um prefixo “rules_”

Log de Envios

• cgilua.upload_transferlog é uma variável com um log de todas os envios de arquivos efetuados por um script. Contém o nome do arquivo original, o nome com o qual foi salvo no servidor e o diretório de destino.
• cgilua.uploadlog(filename) grava um relatório no arquivo filename o conteúdo da variável cgilua.upload_transferlog, concatenando ao final do arquivo caso ele exista.

6 Construindo URLs

cgilua.mkurl( script, table )

Gera uma URL para ser usada como um link HTML para o script CGILua, com a opção de passar uma tabela de dados.

PARÂMETROS script: String com o caminho virtual para o script. Table (opcional): tabela com os parâmetros a serem passados pela URL para o script.

RETORNO Retorna uma string com a URL pronta para uso em um documento HTML. Um erro Lua é gerado caso o script não seja uma string, a tabela não seja uma table ou algum dos campos da tabela não seja uma string.

cgilua.relativeurl( script )

Retorna a URL que deve ser usada para se acessar um script dado por um caminho relativo ao diretório do script que está sendo executado. Esta função permite independência da localização das páginas do CGILua permitindo que páginas se refiram umas às outras usando caminhos relativos, sem a necessidade de codificar as URLs do próprio CGILua e do diretório que contém as páginas.

PARÂMETROS script: String com o caminho relativo do script a que se quer referir.

RETORNO Retorna uma string com a URL pronta para uso em um documento HTML.

cgilua.encodecgi( )

Codifica a tabela cgi na forma de uma string de parâmetros passados em uma URL.

RETORNO Retorna uma string de parâmetros codificados em formato de URL. Se cgi não for uma tabela ou algum índice ou valor da mesma não for uma string ou número, gera um erro Lua.

cgilua.encodetable( table )

Codifica uma tabela dada na forma de uma string de parâmetros passados em uma URL.

PARÂMETROS table: uma tabela com os dados a serem codificados.

RETORNO Retorna uma string de parâmetros codificados em formato de URL. Se table não for uma tabela ou algum índice ou valor da mesma não for uma string ou número, gera um erro Lua.

7 Incluindo Arquivos

cgilua.includehtml ( filename)

Insere um pedaço de HTML no documento atual. O arquivo é pré-processado e expandido no ponto em que a função é chamada.

PARÂMETROS Filename: string contendo o caminho do arquivo a ser processado.

RETORNO Não retorna valor. Se houver algum problema na inclusão do arquivo, um erro Lua é gerado.

Obs.: Para inserir documentos HTML completos gerando um cabeçalho HTTP, utilize a função cgilua.preprocess.

cgilua.preprocess( filename)

Pré-processa o template HTML, gerando um documento HTML com o cabeçalho HTTP (cotnenttype) e o envia diretamente para o dispositivo de saída no momento da chamada da função. Já que o cabeçalho HTTP é gerado, somente faz sentido chamar esta função em scripts Lua, pois tamplates HTML completos geram este cabeçalho automaticamente. Em templates HTML, utilize a função cgilua.includehtml.

PARÂMETROS Filename: String com o caminho do template HTML a ser processado.

RETORNO Não há retorno. Se houver algum problema em abrir o arquivo, um erro é gerado.

EXEMPLO
if cgi.newuser then
cgilua.preprocess( "newuser.html" )
else
cgilua.preprocess( "main.html" )
end

cgilua.splitpath( path )

Separa o diretório do nome de arquivo em um caminho, e retorna os dois.

PARÂMETROS Path: o caminho a ser dividido.

RETORNO Retorna o diretório como primeiro argumento e o nome do arquivo como o segundo.

cgilua.escape( str )

Codifica a string de entrada, substituindo todas as ocorrências de caracteres for a da faixa a-z, AZ, e 0-9 com uma string no formato %XX, onde XX é a representação hexadecimal do número do código do caracter.

PARÂMETROS Str: a string a ser codificada.

RETORNO A string codificada resultante.

cgilua.unescape( str )

Decodifica a string de entrada, substituindo cada ocorrência da substring %XX (onde XX é um número hexadecimal) com o caracter equivalente do código decimal XX.

PARÂMETROS
Str:a string a ser decodificada.

RETURN
A string decodificada resultante.

8 Cabeçalhos HTTP

cgilua.redirect( url, args )

Gera um cabeçalho HTTP redirecionando o browser para outra URL. Corresponde ao cabeçalho Location: HTTP.

PARÂMETROS url: o nome do arquivo ou a URL completa a ser carregada. args (opcional): tabela Lua com parâmetros a serem passados na URL, devidamente codificados.

Obs.: Esta função somente se aplica a scripts Lua. Qualquer outra saída após esse comando será ignorada, embora o script rode até o fim. Saídas escritas antes desta função só fazem sentido se forem outros cabeçalhos HTTP.

cgilua.htmlheader( )

Escreve na saída o cabeçalho HTTP indicador de página HTML (Content-type: text/html)

Obs.: Esta função somente se aplica Scripts Lua.

cgilua.httpheader( header )

Adiciona um cabeçalho HTTP à página sendo criada dinamicamente.

PARÂMETROS header: o texto do cabeçalho HTTP a ser inserido.

Obs.: Aplica-se somente a scripts Lua.

9 Carregando Bibliotecas

cgilua.loadlibrary(basename, initfunc)

Carrega uma biblioteca dinâmica. Procura a bibilioteca no diretório de configuração do cgilua (normalmente cgilua.conf) e então no caminho do sistema para bilbliotecas

PARÂMETROS basename: o nome-base do arquivo a ser carregado. Em UNIX, adiciona automaticamente o prefixo lib e o sufixo .so. Em Windows, adiciona o sufixo .dll. initfunc: a função exportada pela biblioteca a ser chamada após a carga da biblioteca. Normalmente, esta é uma função que registra outras funções C da biblioteca no ambiente Lua.

Obs.: Se a biblioteca não puder ser carregada, a execução do script é abortada mostrando uma mensagem de erro.

cgilua.dofile( file )

Executes um arquivo Lua no ambirente Lua atual. A diferença para o comando dofile de Lua é que os arquivos são pegos do diretório de configuração do cgilua, normalmente cgilua.conf/.

PARÂMETROS file: o arquivo Lua a ser executado.

EXEMPLO
cgilua.dofile( 'lib.lua' )

Obs.: Se a execução falhar ou o arquivo não puder ser encontrado, a execução é abortada.

cgilua.tostring( varname )

Constrói uma representação string da variável passada. Strings são corretamente codificadas e tabelas são convertidas para sua representação em string, com os construtuores de tabelas { e }.

PARÂMETROS varname: o nome da variável Lua.

RETORNO A representação string da variável passada.

EXEMPLO item = { name="X", value=123, properties={ 2, 4, 7 } }
write( cgilua.tostring( item ) )

cgilua.tostring( varname )

Constrói uma representação string da variável passada. Strings são corretamente codificadas e tabelas são convertidas para sua representação em string, com os construtuores de tabelas { e }.

PARÂMETROS varname: o nome da variável Lua.

RETORNO A representação string da variável passada.

EXEMPLO item = { name="X", value=123, properties={ 2, 4, 7 } }
write( cgilua.tostring( item ) )

produz a seguinte saída:

{ ["value"] = 123, ["name"] = "X", ["properties"] = { [1] = 2, [2] = 4, [3] = 7, }, }

Obs.: Função útil para depurar scripts. Não funciona para variáveis do tipo "function" ou "userdata". Tabelas Lua aninhadas são aceitas, exceto se tiverem referências em laço.

cgilua.persistvar( varname )

Produz uma string de forma que a execução da string no ambiente Lua (com dostring) recupera o valor da variável.

PARÂMETROS varname: o nome da variável a ser persistida em uma string.

RETORNO A string a ser usada para se recuperar a variável.

EXEMPLO
list = { "a", "b", "c" }
keeplist = cgilua.persistvar( list )
list = nil
dostring( keeplist )
foreach( list, function (i,v) write( v ) end )
produz o seguinte resultado: abc

cgilua.savestate( var1, var2, ... )

Salva o estado de variáveis string, number ou table para passá-las ao próximo script a ser executado com a função cgilua.mkurl.

PARÂMETROS varx: Nome das variáveis cujo estado deve ser salvo.

No script chamado next.lua, é correto escrever:

cgilua.htmlheader()

i=1;

while x[i] do
write( name, ":", x[i] )
i = i + 1
end

Obs.: Esta função aceita um número variável de argumentos. As variáveis são formatadas para montar uma querystring para serem passadas através da URL na próxima chamada do cgilua.mkurl. Pode-se mudar este comportamento para passá-las através de um arquivo temporário no servidor, através da variável cgilua.STATEMETHOD, localizada em cgilua.conf/state.lua.

10 Variáveis Pré-Definidas

cgi

Contém os dados, já decodificados, enviados para o script, independentemente do método. Os dados podem vir de um submit a um formulário HTML ou diretamente passados pela URL.

Ao dar um submit no formulário, o a tabela cgi no script a.lua terá os campos name e email: write( "Your name is " .. cgi.name .. ", and your e-mail " .. cgi.email )

Uma outra forma de enviar os mesmos campos seria através de um link:
<a href="$|cgilua.mkurl('b.lua',{nome="John",email="john@dom.com" }) |$">

cgilua.version

Versão do CGILua usada.

cgilua.script_pdir

Caminho físico do script sendo executado pelo CGILua.

EXEMPLO:

Se a URL: http://www.cgilua.com/cgi-bin/cgilua/~user/script.lua executa o script localizado em /home/user/public_html/script.lua esta variável possui o valor /home/user/public_html/

cgilua.script_vdir

Caminho virtual do script sendo executado pelo CGILua. EXEMPLO Usando a URL http://www.cgilua.com/cgi-bin/cgilua/~user/script.lua, esta variável possuirá o valor "/~user/".

cgilua.script_path

Caminho virtual do script sendo executado pelo CGILua.

EXEMPLO:

Se a URL: http://www.cgilua.com/cgi-bin/cgilua/~user/script.lua executa o script localizado em /home/user/public_html/script.lua esta variável contém o valor /home/user/public_html/script.lua

cgilua.cgilua_url

Parte da URL usada para referenciar o CGILua.

EXEMPLO:

Usando a URL http://www.cgilua.com/cgi-bin/cgilua/~user/script.lua esta variável contém o valor: /cgi-bin/cgilua

11 Biblioteca: Sistema

Oferece algumas funções úteis do sistema operacional, como datas e operações de E/S

mkdir( path )

Cria um diretório no sistema de arquivos local.

PARÂMETROS
path: caminho do diretório a ser criado (ou simplesmente um nome se deve-se criar abaixo do diretório atual)

RETORNO
Retorna nil em caso de falha ou 1 em sucesso.

chdir( path )

Troca o diretório de trabalho atual para o diretório especificado.

PARÂMETROS path: o caminho do novo diretório de trabalho.

RETORNO Não há retorno. Em caso de falha, o script é abortado e é mostrada uma mensagem de erro.

getcwd( )

Retorna o diretório de trabalho atual.

RETORNO

Uma string contendo o caminho completo do diretório de trabalho atual.

cp( source, target )

Copia o arquivo do caminho de origem para o caminho de destino.

RETORNO

Retorna nil em caso de erro; nesse caso o segundo retorno é uma string descrevendo o erro.

EXEMPLO cp( "c:/test/ball.gif", "c:/www/ball.gif" )

filetype( file )

Retorna o tipo do arquivo.

PARÂMETROS

file: o arquivo de que quer saber o tipo.

RETORNO

Uma da strings: "file", "directory" ou "other" de acordo com otipo do arquivo, ou nil se o tipo do arquivo não pode ser retornado.

filetime( fmt, file )

Retorna a hora da última modificação feita no arquivo.

PARÂMETROS fmt: o formato da string de saída, similar ao da função em C strftime. file (opcional): o arquivo de que se quer saber a hora da última modificação. Caso não seja especificado, é utilizado o caminho do script atual.

RETORNO Uma string com a hora da última modificação, formatada conforme especificado.

EXEMPLO $|filetime("%d/%m/%Y")|$ produz a seguinte saída: 27/04/1999

date2sec( date, fmt )

Converte uma data para o número correspondente de segundos desde primeiro de janeiro de 1970.

PARÂMETROS date: uma string contendo uma data. fmt: o formato da data a ser lida, de acordo com um padrão.

RETORNO O número correspondente de segundos desde primeiro de Janeiro de 1970.

EXEMPLO
$|date2sec("5/02/1997","%d/%m/%Y")|$ produz a seguinte saída: 855111600

sec2date( nsec, fmt )

Converte um número como o número de segundos desde primeiro de janeiro de 1970 para uma data.

PARÂMETROS nsec: número de segundos. fmt: o formato da saída.

RETORNO: A data correspondente ao número de segundos desde primeiro de Janeiro de 1970 correspondente ao parâmetro dado.

EXEMPLO
$|sec2date( date2sec("5/02/1997","%d/%m/%Y"),"%d/%m/%Y")|$ produces the following output: 05/02/1997

lock( fhandle, mode )

Tranca ou destranca o acesso a um arquivo. Na realidade, o acesso ao arquivo não é impedido, na verdade somente permite que seja feito o controle guardando o estado.

PARÂMETRO

fhandle: handle de um arquivo aberto. Após uma chamada bem sucedida a writeto, o handle é dado pela variável de Lua _OUTPUT. Mode: o tipo de operação desejada. Utilize o caracter l para trancar um arquivo e u para destrancar.

RETORNO

Retorna nil em caso de falha e 1 em caso de sucesso.

EXEMPLO

writeto( "data.txt")
while not lock( _OUTPUT, "l") do sleep (50) end
write ( "ok" )
lock( _OUTPUT, "u")
writeto ()
--espera até que nenhum outro processo está com o arquivo trancado para trancar para si

sleep( msec )

Faz com que o processo ou thread correntes fiquem suspensos por msec milissegundos.

PARÂMETROS
msec: o número de milissegundos para ficar suspenso.

12 Biblioteca: DBLua

Oferece acesso a bancos de dados.

DBOpen( dbdescr )

Abre uma conexão com um banco de dados.

PARÂMETROS
dbdescr: string de conexão com um banco de dados.

RETORNO
Retorna nil se a conexão foi bem-sucedida ou uma string descrevendo o erro.

EXEMPLO
(ODBC) errormsg = DBOpen("DSN=agenda;UID=cgilua;PASSWD=lua;")
if errormsg then cgilua.redirect( 'dberror.html', { msg=errormsg }) end

EXEMPLO
(Mini-SQL)
DBOpen('HOST=davinci;DATABASE=agenda;')

Obs.: Para portabilidade, as palavras DATABASE e DSN são equivalentes e HOST é ignorado no uso com ODBC. No entanto, uma string de conexão "HOST=davinci;DATABASE=agenda;" seria válida em ambos ODBC e Mini-SQL se "agenda" é um DSN de ODBC.

DBExec( sqlcommand )

Executa um comando SQL na conexão com banco de dados atualmente aberta.

PARÂMETROS
sqlcommand: uma string com o comando SQL a ser executado.

EXEMPLO
DBExec( "create table tst (nome char(50), cpf char(15))" )
DBExec( "insert into tst values ('Luiza','001.234.567-89')" )
DBExec( "insert into tst values ('Fabiana','009.876.543-21')" )
DBExec( "delete from tst where nome = 'Luiza'")
DBExec( "update tst set cpf = '009.999.999-99' where name ='Fabiana'")

Para evitar confusão com os delimitadores de string de Lua, (" ou ') e delimitadores de string de SQL ('), a função format de Lua pode ser usada.

Ex: sql = format( "insert into tabela_teste values ('%s','%s')", cgi.name, cgi.cpf ) DBExec( sql )

Obs.: Em caso de erro no comando SQL, um erro de execução é mostrado, abortando a execução do script. Para evitar este tipo de comportamento, execute comandos para testar situações de erro (ex. teste se um registro existe com um comando SELECT antes de tentar apagá-lo).

DBRow( )

Retorna a próxima linha da tabela de resultados produzida pela último comando SQL executado (com DBExec).

RETORNO Uma tabela Lua contendo os dados da linha, com todas as coludas da tabela de resultados indexadas na mesma ordem que sua posição no resultado (índices [1], [2], ... ) e também indexadas pelol nome da coluna (índices [“nome_coluna1"], ["nome_coluna2"], ... ). Quando chega no final da tabela, retorna nil.

Exemplo
Suponha que no banco de dados há a tabela “Empregados”, com o seguinte formato: id (int), nome (char 100) e telefone (char 20) Dados:
1 Maria 222-3333
2 Marcelo (NULL)
3 Pedro 555-3333
4 William 666-3333

Obs.: Valores nulos são traduzidos para valores nil em Lua.

 

DBClose( )

Fecha a conexão ativa com o banco de dados, aberta com o DBOpen

Exemplo

DBOpen( "DATABASE=example;" )
DBExec( "create table t (nome char(50), cpf char(15))" )
DBClose()

13 Biblioteca: Crypt

Oferece algumas funcionalidades de criptografia.

crypt( str, key )

Executa uma encriptação DES de 56-bit, usado o algorítimo "Fast DES".

PARÂMETROS str: String a ser encriptada. Pode ser um buffer binário genérico. key (opcional): Uma string a ser utilizada na geração da chave de encriptação. Somente os 8 primeiros caracteres são utilizados. Se não especificado, utiliza uma chave interna fixa.

RETORNO Retorna uma string encriptada em um buffer de 8 bits.

decrypt( cryptbuf, key )

Decripta um buffer, usando o algorítimo de criptografia DES.

PARAMETROS cryptbuf:
Buffer contendo o dado encriptado.

RETORNO
O dato original, decriptado.

md5( str )

Aplica o algorítimo MD5 na string de entrada.

PARÂMETROS
str: string na qual o MD5 será aplicado.

RETORNO
String de saída da aplicação do MD5 na string de entrada.

exor( buff1, buff2 )

Executa um XOR binário nos buffers passados como parâmetros. Pode ser útil para construir outras funções de criptografia em conjunto com a função md5.

PARÂMETROS buff1:
Primeiro operando para o XOR. buff2: Segundo operando para o XOR.

RETORNO
O buffer binário resultante.

encode( strbuff )

Codifica buffers de 8 bit em uma string ASCII de 7 bits, conforme especificado na RFC 822.

PARÂMETROS strbuff:
o buffer binário a ser codificada.

RETORNO
A string resultante codificada.

Exemplo encbuff = encode( crypt( "123456789" )
write( encbuff ) Produz a seguinte saída: uwzJJwuywCnAWQD+ynT+eQc=

decode( codedbuff )

Restaura um buffer codificado pela função encode.

PARÂMETROS
codedbuff: o buffer a ser decodificado.

RETORNO
O buffer decodificado

Exemplo encbuff = encode( crypt( "123456789" ) buff = decode( encbuff ) write( decrypt( buff ) ) Produz a saída: 123456789

Biblioteca: Cookies

Um Cookie é um mecanismo para armazenar informação no cliente de uma conexão HTTP

getcookie( name )

Faz o servidor informar o valor de um cookie armazenado sob o nome name, que foi fornecido pelo browser cliente quando o script foi solicitado.

PARÂMETROS
name: nome do cookie a ser retornado.

RETORNO
O valor do cookie requisitado.

Exemplo
naccess = getcookie( "COUNTACCESS" )
if not naccess then msg = “Bem-vindo, novo usuário!" else
msg = “Bem-vindo de volta! Você já visitou nosso site ".. naccess.." vezes."

end
write( msg )

setcookie( name, value, expires, path, domain, secure )

Despacha um cabeçalho http necessário para criar um cookie no browser cliente.

PARÂMETROS
name: o nome do cookie.
value: o valor do cookie.
expires (opcional): data de quando o cookie irá expirar, no formado dd/mm/yyyy. Se este parâmetro não for fornecido, o cookie será apagado quando a sessão atual terminar (ex. o quando o browser for fechado).
path (opcional): o caminho virtual no servidor apontado pelo domínio (veja abaixo) dos scripts que poderão ver o valor do cookie. O valor mais amplo que pode ser fornecido é “/”, o que significa que qualquer script no servidor terá acesso ao valor do cookie. O valor default é o mesmo caminho virtual do script que está criando o cookie.
domain (opcional): indica o domínio dos servidores que poderão acessar o valor do cookie. Domínios parciais são aceitos (ex: ".puc-rio.br“). Se nenhum valor for fornecido, o default é restringir a visibilidade do cookie ao servidor que o criou.
secure (opcional) : se este parâmetro for igual a "secure", o cookie só será transmitido via um canal seguro (HTTPS).

Exemplo naccess = getcookie( "COUNTACCESS" )
if not naccess then
naccess = 1
else

naccess = naccess + 1
end
setcookie( "COUNTACCESS", naccess )
cgilua.htmlheader()

Obs: Esta função deve ser parte do cabeçalho HTTP do script, ou seja, deve ser chamada antes do corpo do HTML Como esta função deve ser chamada na construção de cabeçalhos HTTP, só faz sentido usá-la em scripts Lua.

setcookiehtml( name, value, expires, path, domain, secure )

Idêntica ao setcookie, mas deve ser utilizada em um template HTML. Gera o cabeçalho HTML SetCookie.

PARÂMETROS
Idênticos ao setcookie.

RETORNO
O código HTML para gerar o cookie no cabeçalho http

deletecookie( name )

Remove o cookie com o nome determinado no browser-cliente.

PARÂMETROS
name: o nome do cookie a ser removido.

Exemplo
deletecookie( "COUNTACCESS" )