
Falar é fácil! Em posts passados eu apenas explicava como deveria funcionar determinada função, mas e na prática?
Então eu denenvolvi um pequeno exemplo de autenticação de usuário via Flash, que se comunicando com um arquivo php sem a necessidade de um post. Exemplo muito simples.
Parte Flash
Eu utilizei os seguintes componentes do Flash pra facilitar a minha vida: Alert, Button e TextInput.
Minha idéia aqui não é explicar os componentes e sim comunicação com o servidor.
Veja o código ActionScript que existe no Flash:
import mx.controls.Alert;
// Define a função cliqueBotao como o evento click do botão btnValidar
btnValidar.addEventListener("click", cliqueBotao );
function cliqueBotao() {
//Verifica se os campos foram preenchidos
if ( txtLogin.text.length == 0 ) {
Alert.show("O login é obrigatório!");
}
else if ( txtSenha.text.length == 0 ) {
Alert.show("A senha é obrigatória!");
}
else {
// Xml de envio
var loginXml:String = "” + txtLogin.text + “ ” + txtSenha.text + “ “;
var xmlEnvio:XML = new XML(loginXml);
xmlEnvio.contentType= “text/xml”;
// Xml de resposta
var xmlResposta:XML = new XML();
xmlResposta.contentType= “text/xml”;
xmlResposta.ignoreWhite = true;
xmlResposta.onLoad = function ( success:Boolean ) {
if ( success ) {
if ( this.firstChild.firstChild.firstChild.nodeValue == “true” ) {
Alert.show(”Usuário válido”);
}
else if ( this.firstChild.firstChild.firstChild.nodeValue == “false” ) {
Alert.show(”Usuário inválido”);
}
else {
Alert.show(”Formato da resposta incorreta”);
}
}
else {
Alert.show(”Erro na comunicação com o servidor”);
}
}
xmlEnvio.sendAndLoad(”autenticaUsuario.php”, xmlResposta);
}
}
Como podem ver, eu fiz uma validação simples e monto o objeto XML de envio. Depois crio o objeto XML retorno setando o evento XML.onLoad que é será chamado depois que o Flash enviar e receber a resposta do php. Depois, finalmente, eu chamado o método XML.sendAndLoad pra enviar e receber a resposta.
Repare que o código dentro do evento é bem simples, apenas verifica se resposta está no padrão certo e mostra a mensagem pro usuário.
Parte php
// Função que pega o conteúdo Xml enviado pelo Flash
$sXml = file_get_contents("php://input");
$sLogin = NULL;
$sSenha = NULL;
$sElemento = NULL;
// Função que será chamda no início da leitura do Xml
function tag_inicial($parser, $elemento) {
global $sElemento;
$sElemento = $elemento;
}
// Função que será chamda no final da leitura do Xml
function tag_final($parser, $elemento) {
}
//Quando o valor das tags forem lidos
function trata_caracter($parser, $dados) {
global $sElemento;
global $sLogin;
global $sSenha;
if ( $sElemento == "LOGIN" )
$sLogin = $dados;
else if ( $sElemento == "SENHA" )
$sSenha = $dados;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "tag_inicial", "tag_final");
xml_set_character_data_handler($xml_parser, "trata_caracter");
xml_parse($xml_parser, $sXml);
xml_parser_free($xml_parser);
$sResultado = "false";
if ( $sLogin == "CubaGames" && $sSenha == "123456" )
$sResultado = "true";
$sXml = "”
. “”
. “” . $sResultado . “ ”
. “ “;
// Fala pro Browser que o documento da página será XML
header(”Content-Type: text/xml; charset=utf-8″);
// Codifica a String em UTF-8
echo utf8_encode($sXml);
Um dos detalhes principais deste código é o file_get_contents, função está que pega o conteúdo inteiro de um arquivo e retorna como string. No caso, não estamos usando arquivo físico e sim tudo o que for de entrada para o php.
Depois utilizo a API XML do php pra varre o XML e efetuar validação do usuário. Este código não valida o padrão XML passado, retornar true se o padrão está correto e o usuário é “CubaGames” e a senha “123456″. A resposta é colocada num XML de retorno.
Simples não?
Para ver o exemplo funcionando, clique aqui.
Para fazer download do código fonte, clique aqui.
Aquele abraço
Categorias: Desenvolvimento, Flash - ActionScript |