Tutorial para fazer um livro de visitas com Flash e ASP

Neste tutorial iremos ensinar a fazer um livro de visitas simples com ASP, Flash e sem necessidade de banco de dados.

Por Tutoriales-flash.com


Publicado em: 07/10/08
Valorize este artigo:
Para evitar o uso do banco de dados vamos armazenar os comentários dos visitantes em um arquivo de texto plano em formato XML.



Nota: Os comentários fúteis ou ofensivos serão eliminados do arquivo pela equipe de tutoriales-flash.com.

O mecanismo do livro é muito simples, adicionamos os comentários sequencialmente em um arquivo de texto existente em nosso servidor. Para mostrar todos os comentários, se lê o arquivo e se carregam os dados no filme swf.

COMO FAZÊ-LO.

O arquivo que armazena os comentários, que em nosso caso se chama livro.txt, terá este formato:

<visita data='27/12/2006 12:31:11'>
<autor>Usuario%201</autor>
<comentario>Este%20es%20un%20comentario%20de%20prueba%2E%20%BFse%20ve%20bien%3F</comentario>
</visita>
<visita data='27/12/2006 12:31:37'>
<autor>Usuario%202</autor>
<comentario>Este%20es%20otro%20comentario%20de%20prova%2E%20Pois%20s%ED%2C%20se%20ve%20bem%2E</comentario>
</visita>


Como se pode ver, se parece a um documento XML, porém lhe faltam dois elementos imprescindíveis em todo XML: A declaração do tipo de documento e o nó principal que contém ao resto de nós. Mais adiante veremos o porquê deste formato incompleto.

Para editar este arquivo livro.txt cada vez que se inclui um comentário novo, usamos o objeto FileSystemObject de ASP já que Flash por si só não pode fazê-lo. Ademais terá que estar habilitada a permissão de escritura no diretório que o contenha. Com este arquivo add_comentarios.asp realizamos a operação.

<%
On Error Resume Next
' Criamos o objeto FileSystemObject chamado fs
Set fs=Server.CreateObject("Scripting.FileSystemObject")
' Abrimos o arquivo para modificá-lo e nos posicionamos ao final
' do arquivo, por isso o 2o argumento é 8, se fosse 1 se abriria
' em modo só leitura
Set f=fs.OpenTextFile(Server.MapPath("/livro_visitas/livro.txt"), 8)
' Inserimos os dados enviados desde Flash
f.WriteLine("<visita data='"& Now &"'>")
f.Write("<autor>")
f.Write(Trim(Request("autor")))
f.WriteLine("</autor>")
f.Write("<comentario>")
f.Write(Trim(Request("comentario")))
f.WriteLine("</comentario>")
f.WriteLine("</visita>")
' Fechamos e eliminamos os objetos usados
f.Close
Set f=Nothing
Set fs=Nothing
' se Err=0 tudo foi bem, este valor é devolvido
' a flash para confirmar a operação
Response.write("error="&Err)
%>


Se observarem, se adiciona a data do servidor no momento do comentário, o autor e o comentário em si.

Para ler o arquivo com os comentários usamos o arquivo comentarios.asp.

<%
Response.ContentType="text/xml"
' Abro o arquivo para lê-lo
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set f=fs.OpenTextFile(Server.MapPath("/livro_visitas/livro.txt"), 1)
' Adiciono a declaração de documento e abro o nó principal
Response.write("<?xml version='1.0' encoding='ISO-8859-1' ?><visitas>")
Response.Write(f.ReadAll)
' fecho o nó principal, com o que já tenho
' um XML bem formado
Response.write("</visitas>")
' Fechamos e eliminamos os objetos usados
f.Close
Set f=Nothing
Set fs=Nothing
%>


A resposta deste arquivo é um XML bem construído que se pode ver aqui. A razão de salvar o arquivo livro.txt em formato incompleto é que se facilita sua atualização de novos comentários. Com cada comentário novo simplesmente temos que adicionar ao final os novos dados e esquecermos.

Neste ponto, vamos a Flash para ver o código ActionScript necessário que vai no primeiro fotograma:

// ajustes iniciais -----------------------------------
System.useCodepage = true;
// evitamos problemas com os nós em branco
XML.prototype.ignoreWhite = true;
_global.style.setStyle("fontSize", 10);
visitas_txt.htmlText = true;
// impedimos o uso dos caracteres < e >
// que podem dar problemas
autor_txt.restrict = "^<>";
comentario_txt.restrict = "^<>";
// fim ajustes iniciais -------------------------------
// estilos CSS para os comentários
var my_styles:TextField.StyleSheet = new TextField.StyleSheet();
my_styles.setStyle("autor", {fontFamily:"Tahoma, Arial,Helvetica,sans-serif", fontSize:"11px", color:"#99CC00"});
my_styles.setStyle("data", {fontFamily:"Tahoma, Arial,Helvetica,sans-serif", fontSize:"10px", color:"#006699"});
my_styles.setStyle("comentario", {fontFamily:"Tahoma, Arial,Helvetica,sans-serif", fontSize:"10px", color:"#666666"});
visitas_txt.styleSheet = my_styles;
// objeto LoadVars para enviar comentarios
// e comprovar a operação
var visitas_lv:LoadVars = new LoadVars();
visitas_lv.onLoad = function() {
if (this.error == 0) {
comentarios_xml.load("/asp/comentarios.asp");
} else {
visitas_txt.text = "Erro escrevendo comentário.";
}
};
// objeto XML que carrega os comentários
var comentarios_xml:XML = new XML();
comentarios_xml.onLoad = carregarComentarios;
function carregarComentarios() {
visitas_txt.text = "";
var array_temp:Array = this.firstChild.childNodes;
if (!isNaN(array_temp.length)) {
// numero de comentarios
titulo_lb.text = array_temp.length+" comentarios";
// preencho o textArea com os comentarios
array_temp.reverse();
for (var k:Number = 0; array_temp[k]; k++) {
var autor:String = unescape(array_temp[k].firstChild.firstChild.toString());
var comentario:String = unescape(array_temp[k].lastChild.firstChild.toString());
visitas_txt.text += "<p><autor>Autor: <b>"+autor+"</b></autor></p>";
visitas_txt.text += "<p><fecha>"+array_temp[k].attributes.data+"</data></p>";
visitas_txt.text += "<p><comentario>"+comentario+"</comentario></p>";
visitas_txt.text += "<p></p>";
}
}
}
// função para mandar um comentário, comprovo que o autor
// tenha pelo menos 3 caracteres e o comentário 1
function enviarComentario() {
if (autor_txt.text.length>=3 && comentario_txt.text.length>=1) {
visitas_lv.autor = escape(autor_txt.text);
visitas_lv.comentario = escape(comentario_txt.text);
visitas_lv.sendAndLoad("/asp/add_comentario.asp", visitas_lv, "POST");
}
}
// defino a função que se executará o clicar no botão
botao_enviar.addEventListener("click", enviarComentario);
// carrego os comentários sem intervenção do usuário
// ao entrar na página
comentarios_xml.load("/asp/comentarios.asp");


Empregamos escape() e unescape() para assegurarmos que não haja problemas com os caracteres empregados no nome de autor e os comentários.

Vocês podem baixar este mesmo exemplo e ver como funciona: livro.zip





Comentários do artigo
Foram enviados 2 comentários ao artigo
2 comentários não revisados
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato